2016-10-27 159 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後,數據包通過了。