【发布时间】:2014-01-02 15:19:33
【问题描述】:
我尝试将文件大小为 4GB 的文件发布到 REST API。
cURL 不会上传具有这种大小的文件,而是 POST 一个 Content-Length: 0 的文件。
curl -v -i -d @"/work/large.png" -H "Transfer-Encoding: chunked" http://localhost:8080/files
* Adding handle: conn: 0x7fcafc00aa00
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fcafc00aa00) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8080 (#0)
* Trying localhost...
* Connected to localhost (localhost) port 8080 (#0)
> POST /files HTTP/1.1
> User-Agent: curl/7.30.0
> Host: localhost:8080
> Accept: */*
> Transfer-Encoding: chunked
> Authorization: bearer XXX.XXX.XXX
> x-user-token: bearer XXX.XXX.XXX
* upload completely sent off: 5 out of 0 bytes
< HTTP/1.1 201 Created
HTTP/1.1 201 Created
< Date: Thu, 02 Jan 2014 14:55:46 GMT
Date: Thu, 02 Jan 2014 14:55:46 GMT
< ETag: "d41d8cd98f00b204e9800998ecf8427e"
ETag: "d41d8cd98f00b204e9800998ecf8427e"
< Location: http://localhost:8080/files/66032e34-9490-4556-8495-fb485ca12811
Location: http://localhost:8080/files/66032e34-9490-4556-8495-fb485ca12811
* Server nginx/1.4.1 is not blacklisted
< Server: nginx/1.4.1
Server: nginx/1.4.1
< Content-Length: 0
Content-Length: 0
< Connection: keep-alive
Connection: keep-alive
使用较小的文件将按预期工作。
-rw-r--r-- 1 user1 wheel 4403200000 2 Jan 15:02 /work/large.png
为什么上传失败?还有,如何正确上传这样的文件?
干杯。
【问题讨论】:
-
也许你需要
-X POST? stackoverflow.com/a/11164871/1542000 -
谢谢卡尔,但这无济于事。恕我直言,指定 -d 时,cURL 默认使用 POST。
-
尝试
--data-binary而不是-d。-d默认为--data-ascii,它不适用于 binary PNG 图像。 -
--data-binary完美运行。非常感谢。 -
嘿,@尼尔斯!也许您可以考虑在这里接受其中一个答案?这将帮助其他用户,因为它可以让他们知道什么对你有用。