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:
Voici ce que j'ai pour curl jusqu'ici:
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"
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.