2013-06-06 9 views
188

Scrivo da tempo applicazioni per iPhone, inviando dati al server, ricevendo dati (tramite protocollo HTTP), senza pensarci troppo. Principalmente sono teoricamente familiare con il processo, ma la parte che non mi è così familiare è la richiesta multipartitica HTTP. Conosco la sua struttura di base, ma il nucleo di essa mi sfugge.Che cos'è la richiesta multipartitica http?

Sembra che quando invio qualcosa di diverso dal testo normale (come foto, musica), devo usare una richiesta multipart. Qualcuno può spiegarmi brevemente perché è usato e quali sono i suoi vantaggi?

Se lo uso, perché è il modo migliore per inviare foto in questo modo?

+0

Vedere il seguente link per informazioni: [http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2](http://www.w3.org/TR/ html401/interact/forms.html # h-17.13.4.2) – zargarf

risposta

198

Una richiesta multipart HTTP è una richiesta HTTP che i client HTTP costruiscono per inviare file e dati su un server HTTP. È comunemente usato dai browser e dai client HTTP per caricare file sul server.

+3

Volevo semplicemente aggiungere che _multipart i campi dei dati dei moduli sono inviati in ordine_. Questo non è qualcosa che è immediatamente ovvio - ho aggiunto un elenco di link qui: https://github.com/balderdashy/skipper/blob/master/README.md#the-big-assumption-field-order Se ne ottengo un po ' tempo di mettere insieme un caso di test usando PhantomJS/webkit, aggiungerò il link anche lì. I browser obbediscono a questa parte delle specifiche, anche nel IE6. – mikermcneil

+37

La parte difficile è capire perché si chiama * richiesta multipart *, invece di qualcosa di più ovvio, come * richiesta di caricamento file *. –

+8

L'OP desiderava un approccio filosofico e una risposta. Questa risposta non spiega la parte "perché". Si tratta più di "cosa". Non sono un grande fan del downvoting, ma sostengo che questa risposta non è ciò che l'OP voleva e ho cercato. –

6

Come la specifica ufficiale (https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html) dice: "uno o più diversi insiemi di dati sono combinati in un unico corpo". Quindi, quando le foto e la musica sono gestite come messaggi multipart come menzionato nella domanda, probabilmente ci sono anche alcuni metadati di testo in chiaro associati, rendendo così la richiesta contenente diversi tipi di dati (binari, testo), che implicano l'uso di multipart.