2016-10-27 162 views
0

我试图使用multipart/form-data POST请求上传文件。 相同的请求适用于其他系统上的其他人,但不适用于我的电脑。 我得到“RequestTimeout,你的套接字连接到服务器没有从超时期限内读取或写入,空闲连接将被关闭”错误从s3服务器。使用multipart/form-data将文件上传到aws s3返回RequestTimeout

我使用的是Ubuntu 16.04和curl发送请求。 还尝试使用--data-binary选项卷曲,获得相同的结果。

curl -X POST --header "Content-Type:multipart/form-data, boundary=xxxxxxxxxx" --data @x.txt http://some-server.s3.amazonaws.com 

x.txt看起来是这样的:

--xxxxxxxxxx 
Content-Disposition: form-data; name="AWSAccessKeyId" 

someaccesskey 
--xxxxxxxxxx 
Content-Disposition: form-data; name="success_action_status" 

200 
--xxxxxxxxxx 
Content-Disposition: form-data; name="acl" 

public-read 
--xxxxxxxxxx 
Content-Disposition: form-data; name="key" 

/somedir/somefilename.png 
--xxxxxxxxxx 
Content-Disposition: form-data; name="Cache-Control" 

no-cache 
--xxxxxxxxxx 
Content-Disposition: form-data; name="Content-Type" 

image/png 
--xxxxxxxxxx 
Content-Disposition: form-data; name="policy" 

somepolicy== 
--xxxxxxxxxx 
Content-Disposition: form-data; name="signature" 

somesignature= 
--xxxxxxxxxx 
Content-Disposition: form-data; name="file"; filename="somefilename.png" 
Content-Type: application/octet-stream 

S 
--xxxxxxxxxx-- 

回答

0

在Wireshark的,从我的机器上观看退出报文后,我发现的Windows减少了它试图发送到亚马逊的数据包的长度,Ubuntu将它留作MTU 1500,在将其更改为536后,数据包通过了。