POST de fichier de 4 go de shell à l'aide de cURL
J'essaie de poster un fichier avec une taille de fichier de 4 go sur une API REST.
Au lieu de télécharger un fichier de cette taille, cURL Postes un fichier avec le Contenu-Durée: 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
En utilisant des fichiers avec une taille plus petite.
-rw-r--r-- 1 user1 wheel 4403200000 2 Jan 15:02 /work/large.png
Pourquoi le téléchargement a échoué? Et, comment bien charger d'un tel fichier?
Acclamations.
Peut-être vous avez besoin
Merci Karl, mais cela ne l'aide pas. À mon humble avis cURL utilise POST en tant que par défaut lors de la spécification -d.
Essayez
Hey, @Nils! Vous pourriez peut-être envisager d'accepter l'une des réponses ici? Cela permettrait d'aider d'autres utilisateurs, car il leur permet de savoir ce qui a fonctionné pour vous.
-X POST
? stackoverflow.com/a/11164871/1542000Merci Karl, mais cela ne l'aide pas. À mon humble avis cURL utilise POST en tant que par défaut lors de la spécification -d.
Essayez
--data-binary
au lieu de -d
. -d
par défaut --data-ascii
, qui ne fonctionne pas bien sur un binaire image PNG.--data-binary
fonctionne parfaitement. Merci beaucoup.Hey, @Nils! Vous pourriez peut-être envisager d'accepter l'une des réponses ici? Cela permettrait d'aider d'autres utilisateurs, car il leur permet de savoir ce qui a fonctionné pour vous.
OriginalL'auteur Nils | 2014-01-02
Vous devez vous connecter pour publier un commentaire.
De télécharger de gros fichiers binaires à l'aide de CURL, vous aurez besoin d'utiliser
--data-binary
drapeau.Dans mon cas, c'était:
Remarque: c'est vraiment une version étendue de @KarlC commentaire, qui est en fait la bonne réponse.
OriginalL'auteur jb.
Je pense que vous devriez envisager d'utiliser
-T
option au lieu de--data-binary
. Le--data-binary
charge la totalité du fichier en mémoire curl (7.47). Au mieux, il est lent, au pire l'OOM killer va répondre avec unKilled
message.-T
au lieu de--data-binary
, et la réponse ci-dessous par @jb. dit que--data-binary
est la bonne façon de le faire?OriginalL'auteur Benoit Delbosc
Avez-vous vérifier que la connexion n'est pas de timing ?
Vérifier CURLOPT_POSTFIELDS a une longueur ou une limite de taille?
Vérifier Ne pouvez pas poster de données de repos serveur à l'aide de cURL avec le contenu de longueur supérieure à 1 mo
Mais basé sur mes recherches tout ce que je peux dire, est question est à côté serveur. Maintenant, il pourrait être question de la mémoire (taille de la mémoire Tampon ), problème de délai d'attente... et beaucoup dépend de la plate-forme que vous utilisez sur le côté serveur. Oui, fournir des détails sur serverside et certains journal de sortie...surtout essayer de capturer le journal des erreurs.
Pouvez-vous essayer avec un fichier plus petit d'abord et voir si cela fonctionne? Dire quelque chose comme, à moins de 2 mo. Si cela fonctionne, nous sommes sûrs de votre cadre est dans une forme. Aussi, permettez-moi de connaître le contenu du journal d'accès (ou son équivalent) avec les deux < 2 mo et 4 GO de fichier.
OriginalL'auteur javadevg