web-dev-qa-db-fra.com

Affichage de données binaires avec curl

En gros, j'essaye d'écrire une série de scripts pour interagir avec Dot Net Nuke. J'ai analysé le trafic et je peux maintenant me connecter et effectuer certaines tâches de base. Cependant, je n'ai jamais géré le téléchargement de fichiers binaires avec curl. Quelqu'un serait-il prêt à regarder cela pour m'aider? Voici l'anatomie de la demande:

http://Pastebin.com/qU8ZEMaQ

Voici ce que j'ai pour curl jusqu'ici:

http://Pastebin.com/LG2ubFZG

edit: Pour les paresseux -

la longueur du fichier est atteinte et stockée dans LENGTH
STUFF est simplement un copier/coller de l'URL de la requête avec les paramètres, moins l'URL elle-même.

curl -L --cookie ~/.cms --data-binary "@background.jpg" \
--header "Content-Length: $LENGTH" \
--header "Content-Disposition: form-data" \
--header "name=\"RadFileExplorer1_upload1file0\"" \
--header "Content-Type: image/jpg" \
--header "Filename=\"background.jpg\"" \
--data $STUFF \
--referer "Kept-Secret" \
"Kept-Secret"
45
user798080

Vous n'avez pas besoin de - header "Content-Length: $ LENGTH".

 curl --request POST --data-binary "@ template_entry.xml" $ URL 

Notez que la requête GET ne prend pas en charge le contenu du corps de manière générale .

Rappelez-vous également que la requête POST) a 2 schémas de codage différents. Il s’agit du premier formulaire:

 $ nc -l -p 6666 & 
 $ curl --request POST --data-binary "@README" http: // localhost: 6666 
 
 POST/HTTP/1.1 
 Utilisateur-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2 .3.4 libidn/1.15 libssh2/1.2.6 
 Hôte: localhost: 6666 
 Accepter: */* 
 Longueur du contenu: 9309 
 Contenu-Type: application /x-www-form-urlencoded[.____.//Expect: 100-continue 
 
 .. - * - mode: rst; codage: cp1251; fill-column: 80 - * - 
 .. rst2html.py README LISEZMOI.html 
 .. contenu :: 

Vous demandez probablement ceci:

 - F/- nom du formulaire = contenu 
 (HTTP) Permet à Curl d'émuler un formulaire rempli en 
 Pour lequel un utilisateur a appuyé sur le bouton d'envoi. Ceci 
 Provoque curl à POST données utilisant le type de contenu 
 Multipart/form-data conformément à RFC2388. Ce 
 Permet le téléchargement de fichiers binaires etc. Pour forcer la partie 
 'contenu' à être un fichier, préfixez le nom de fichier 
 avec le signe @. Pour obtenir simplement la partie contenu d'un fichier 
, préfixez le nom de fichier avec le symbole <. La différence de 
 entre @ et <est alors que @ crée un fichier 
 joint en pièce jointe sous la forme d'un fichier téléchargé, 
 tandis que le <crée un fichier. champ de texte et récupérez simplement le contenu de 
 pour ce champ de texte à partir d'un fichier. 
67
gavenkoa