2012-12-28 18 views
15

Ho una semplice domanda riguardante l'utilizzo di cURL. Non ho trovato molto durante la mia ricerca Google o nella pagina Man per ottenere una risposta chiara.CURL POST --data-binary vs --form

In here parla dell'utilizzo di --data rispetto a --form sull'invio di file/allegato. Sono curioso di sapere quali sono le principali differenze e in quali scenari sceglieresti --data-binary VS --form?

Il "corpo" POST può essere inviato via sia --data (for application/x-www-form-urlencoded) o --form (for multipart/form-data):

-F "foo=bar"     # 'foo' value is 'bar' 
-F "foo=<foovalue.txt"  # the specified file is sent as plain text input 
-F "[email protected]"  # the specified file is sent as an attachment 

-d "foo=bar" 
-d "foo=<foovalue.txt" 
-d "[email protected]" 
-d "@entirebody.txt"   # the specified file is used as the POST body 

--data-binary "@binarybody.jpg" 

risposta

6

Il la differenza è spiegata nello HTML 4.01 Specification section on Forms:

application/x-www-form-urlencoded è il contenuto predefinito genere.

Il tipo di contenuto "application/x-www-form-urlencoded" è inefficiente per l'invio di grandi quantità di dati binari o di testo contenenti caratteri non ASCII. Il tipo di contenuto "multipart/form-data" deve essere utilizzato per inviare moduli che contengono file, dati non ASCII e dati binari.

3

che è esattamente la differenza principale, il tipo di dati che vengono inviati al server (application/x-www-form-urlencoded vs multipart/form-data)

+0

Grazie! Quali sono gli scenari in cui utilizzerai entrambi i tipi di dati? quindi 'form-urlencoded' è per i dati incorporati nella richiesta, ma multipart è diverso? – xbeta