bash - tutorial - Publicación de datos binarios con curl
para que se usa elastic search (1)
Básicamente, estoy tratando de escribir una serie de scripts para interactuar con Dot Net Nuke. He estado analizando el tráfico y ahora puedo iniciar sesión y realizar algunas tareas básicas. Sin embargo, nunca he manejado la carga de archivos binarios con curl. ¿Alguien estaría dispuesto a mirar esto para ayudarme? Aquí está la anatomía de la solicitud:
Esto es lo que tengo para curl hasta ahora:
editar: Para los perezosos -
la longitud del archivo se logra y se almacena en LENGTH Bullshit es solo copiar / pegar de la URL de solicitud con parámetros, menos la URL misma.
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 $BULLSHIT /
--referer "Kept-Secret" /
"Kept-Secret"
No necesita - encabezado "Content-Length: $ LENGTH" .
Busque ejemplo para Google ejemplo:
http://code.google.com/apis/gdata/articles/using_cURL.html#creating-entries
curl --request POST --data-binary "@template_entry.xml" $URL
Tenga en cuenta que la solicitud GET no es compatible con la transferencia de datos.
Recuerde también que la solicitud POST tiene 2 esquemas de codificación diferentes. Esta es la primera forma:
$ nc -l -p 6666 & $ curl --request POST --data-binary "@README" http://localhost:6666 POST / HTTP/1.1 User-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 Host: localhost:6666 Accept: */* Content-Length: 9309 Content-Type: application/x-www-form-urlencoded Expect: 100-continue .. -*- mode: rst; coding: cp1251; fill-column: 80 -*- .. rst2html.py README README.html .. contents::
Probablemente solicites esto:
-F/--form name=content (HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content- Type multipart/form-data according to RFC2388. This enables uploading of binary files etc. To force the ''content'' part to be a file, prefix the file name with an @ sign. To just get the content part from a file, prefix the file name with the symbol . The difference between @ and is then that @ makes a file get attached in the post as a file upload, while the makes a text field and just get the contents for that text field from a file.