AWS
IncorrectNumberOfFilesInPostRequest - Incorrect Number of Files in POST Request
Hitting an **IncorrectNumberOfFilesInPostRequest** error means your POST request has zero files or more than one file—S3 presigned POST requires exactly one file per request. This client-side error (4xx) happens when AWS validates POST request file count. Most common when no file is provided, but also appears when multiple files are included in a single POST, file field is missing from form data, form data structure is incorrect, or POST request format is invalid.
#Common Causes
- →Identity: IAM policy allows POST but file count invalid. Service Control Policy (SCP) enforces file count limits.
- →Network: VPC endpoint POST restrictions. API Gateway file upload limits.
- →Limits: No file provided in POST request. Multiple files included in single POST. File field missing from form data. Incorrect form data structure. POST request format invalid.
✓Solutions
- 1Step 1: Diagnose - Check file count in POST request: Review POST request body. Count number of files. Verify if zero or multiple files. Check form data structure.
- 2Step 2: Diagnose - Verify file field in form data: Check if file field exists. Verify file field name matches presigned POST policy. Check if field contains exactly one file.
- 3Step 3: Diagnose - Review form data structure: Verify multipart/form-data format. Check Content-Type header. Verify file field is correctly formatted.
- 4Step 4: Fix - Include exactly one file: Ensure POST request has exactly one file. Use correct file field name from presigned POST policy. Verify file is attached to form data.
- 5Step 5: Fix - Use correct POST format: Use multipart/form-data with single file field. Match field names from presigned POST policy. Ensure file is included in form data.
</>Code Examples
Generate S3 Presigned POST URL (Single File)
1#!/bin/bash
2BUCKET_NAME="my-bucket"
3OBJECT_KEY="uploaded-file.txt"
4EXPIRES_IN=3600 # 1 hour
5
6echo "=== Generating S3 Presigned POST URL ==="
7echo "Bucket: ${BUCKET_NAME}"
8echo "Key: ${OBJECT_KEY}"
9
10# Generate presigned POST URL
11aws s3 presign s3://${BUCKET_NAME}/${OBJECT_KEY} \
12 --expires-in ${EXPIRES_IN} \
13 --method POST
14
15echo "\n=== Note ==="
16echo "S3 presigned POST requires exactly one file"
17echo "Use multipart/form-data with single file field"
18echo "Field name must match presigned POST policy"Validate POST Request Has Exactly One File
1#!/bin/bash
2# When using presigned POST, ensure exactly one file
3echo "=== S3 Presigned POST Requirements ==="
4echo "1. Exactly one file per POST request"
5echo "2. Use multipart/form-data"
6echo "3. File field name must match policy"
7echo "4. All policy conditions must be met"
8
9echo "\n=== Common Mistakes ==="
10echo "✗ Zero files in POST request"
11echo "✗ Multiple files in single POST"
12echo "✗ Missing file field in form data"
13echo "✗ Incorrect form data structure"
14
15echo "\n=== Correct Format ==="
16echo "✓ Single file in POST request"
17echo "✓ multipart/form-data Content-Type"
18echo "✓ File field matches presigned POST policy"
19echo "✓ All required fields from policy included"↗Related Errors
Provider Information
This error code is specific to AWS services. For more information, refer to the official AWS documentation.