2013-06-06 6 views
188

Ich schreibe schon seit einiger Zeit iPhone-Anwendungen, sende Daten an Server, empfange Daten (via HTTP-Protokoll), ohne zu viel darüber nachzudenken. Meistens bin ich theoretisch mit dem Prozess vertraut, aber der Teil, den ich nicht so gut kenne, ist HTTP-Multipart-Anfrage. Ich kenne seine Grundstruktur, aber der Kern davon entzieht sich mir.Was ist HTTP-Multipart-Anfrage?

Es scheint, dass, wenn ich etwas anderes als Klartext (wie Fotos, Musik) sende, muss ich eine mehrteilige Anfrage verwenden. Kann mir jemand kurz erklären, warum es benutzt wird und welche Vorteile es hat?

Wenn ich es verwende, warum ist es besser, Fotos so zu senden?

+0

Siehe den folgenden Link für Informationen: [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

Antwort

198

Eine HTTP-Multipart-Anfrage ist eine HTTP-Anfrage, die HTTP-Clients erstellen, um Dateien und Daten an einen HTTP-Server zu senden. Es wird häufig von Browsern und HTTP-Clients zum Hochladen von Dateien auf den Server verwendet.

+3

wollte nur hinzufügen, dass _multipart Formular Datenfelder in order_ gesendet werden. Dies ist nicht etwas, das sofort offensichtlich ist - Ich habe eine Liste von Links hier hinzugefügt: https://github.com/balderdashy/skipper/blob/master/README.md#the-big-assumption-field-order Wenn ich etwas bekomme Zeit, einen Testfall mit PhantomJS/webkit zusammenzustellen, ich werde den Link dort auch hinzufügen. Browser gehorchen diesem Teil der Spezifikation, sogar so weit zurück wie IE6. – mikermcneil

+37

Der schwierige Teil ist zu verstehen, warum es * multipart Anfrage * genannt wird, anstelle von etwas offensichtlicher, wie * Datei-Upload-Anfrage *. –

+8

Der OP wollte einen philosophischen Ansatz und eine Antwort. Diese Antwort erklärt nicht "warum" Teil. Es geht mehr um "was". Ich bin kein großer Fan von Downvoting, aber ich argumentiere, dass diese Antwort nicht das ist, was OP wollte und ich suchte. –

6

als die offizielle Spezifikation (https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html) sagt: "ein oder mehrere verschiedene Sätze von Daten sind in einem einzigen Körper kombiniert". Wenn also Fotos und Musik als mehrteilige Nachrichten behandelt werden, wie in der Frage erwähnt, sind wahrscheinlich auch einige Metadaten im Klartext verknüpft, so dass die Anfrage verschiedene Arten von Daten enthält (binär, Text), was die Verwendung von mehrteilig bedeutet.