我正在尝试通过邮递员休息客户端使用以下请求创建对象。它给出了下面提到的错误。这可能是什么原因?任何人都可以帮我解决这个问题吗?
请求:
POST HTTP/1.1
Host: 1465549420742testconbkt2.s3-us-west-2.amazonaws.com
x-amz-date: Fri, 10 Jun 2016 09:03:47 GMT
Authorization: xxxxxx
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryE19zNvXGzXaLvS5C
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="file"; filename="testFile.txt"
Content-Type: text/plain
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="acl"
public-read-write
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="key"
testFile.txt
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="success_action_status"
200
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="AWSAccessKeyId"
AKIAJQJTU6FXS7TC2DTA
----WebKitFormBoundaryE19zNvXGzXaLvS5C
响应:
<Error>
<Code>InvalidArgument</Code>
<Message>POST requires exactly one file upload per request.</Message>
<ArgumentName>file</ArgumentName>
<ArgumentValue>0</ArgumentValue>
<RequestId>B1EE3A8D9EA832AE</RequestId>
<HostId>dqOG4gKXDXYKomDig1VD559Wc3XCLvPPB+uUiM6xKNiOVeMH+dvqDrAv47zy15qDIz/WvO+T3rQ=</HostId>
</Error>
提前致谢
答案 0 :(得分:0)
您的边界出错:
它需要“ - ”(2破折号)比标题更多:
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryE19zNvXGzXaLvS5C
应该是:
Content-Type: multipart/form-data;boundary=------WebKitFormBoundaryE19zNvXGzXaLvS5C
显然是发布请求
答案 1 :(得分:0)
文件或内容必须是表单中的最后一个字段。它下面的任何字段都会被忽略。
http://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTForms.html
你的不是最后一个。接下来是其他表单字段,可能这让S3感到困惑,认为你有多个文件。当然,文档中的“忽略”与我的解释并不完全一致,但这可能是上传小文件的副作用,如果这就是你正在做的事情......那些在大约前20K内开始的字段如果他们来到文件之后,上传可能并不总是被忽略。
答案 2 :(得分:0)
我认为你的边界值需要为每个条目添加前缀--
,最后一个边界值需要以--
为后缀,如下所述(前面提到过,文件需要最后一个) :
POST HTTP/1.1
Host: 1465549420742testconbkt2.s3-us-west-2.amazonaws.com
x-amz-date: Fri, 10 Jun 2016 09:03:47 GMT
Authorization: xxxxxx
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryE19zNvXGzXaLvS5C
Cache-Control: no-cache
------WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="acl"
public-read-write
------WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="key"
testFile.txt
------WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="success_action_status"
200
------WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="AWSAccessKeyId"
AKIAJQJTU6FXS7TC2DTA
------WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="file"; filename="testFile.txt"
Content-Type: text/plain
------WebKitFormBoundaryE19zNvXGzXaLvS5C--