2010-08-18 9 views
10

Ich möchte eine Frage zu den multipart/form Daten stellen. Ich finde den http-Header von Multipart-Post und den Content-Type: multipart/form-data; Grenze = ----- ...--- GrenzeNummer. Ich möchte fragen, wie viele von '-' zwischen der boundaryNumber und '='?Was ist das '-' in multipart/form-data?

Antwort

26

Keine einzige - ist obligatorisch. Sie können eine beliebige Anzahl von ihnen haben. Es ist eigentlich ein Rätsel für mich, warum Benutzer-Agenten dazu neigen, so viele hinzuzufügen. Es ist wahrscheinlich traditionell, weil in den alten Tagen, als die Leute immer noch regelmäßig den tatsächlichen Protokollverkehr betrachteten, es eine nette visuelle Trennung gab. Heutzutage ist es sinnlos.

Beachten Sie jedoch, dass wenn Sie die Grenze im Stream verwenden, muss es zwei Bindestriche vorangestellt werden (--). Das ist Teil des Protokolls. Die Tatsache, dass die meisten Benutzeragenten viele Bindestriche in ihrer Grenze verwenden, macht es natürlich sehr schwer, dies als Beispiel zu sehen.

Weiterhin ist die letzte Grenze (die das Ende der Nachricht markiert) wird als Präfix und durch zwei Bindestriche suffixed (--).

zusammenfassend So könnten Sie Ihre Grenze OMGWTFPLZDIEKTHX nennen, und dann Verkehr könnte wie folgt aussehen:

Content-Type: multipart/form-data; boundary=OMGWTFPLZDIEKTHX 

--OMGWTFPLZDIEKTHX 
Content-Type: text/plain 

First part (plain text). 
--OMGWTFPLZDIEKTHX 
Content-Type: text/html 

<html>Second part (HTML).</html> 
--OMGWTFPLZDIEKTHX-- 
+0

danke für Ihre Antwort. – Questions

+1

+1 für die Unterscheidung zwischen den beiden Grenze (-) in der Spezifikation gegenüber der überflüssigen (---), die oft an der Grenze hinzugefügt werden ... – LesterDove

+0

Was passiert, wenn Sie Inhalt nach der letzten Zeile haben '--OMGWTFPLZDIEKTHX- -' – Pacerier

2

Die Anzahl der Bindestriche hängt davon ab, wie viele Stellen Sie dort haben möchten. Es kann Null sein, wenn Sie möchten - es ist nur so, dass mehr Striche die Grenze deutlicher machen.

Die Grenze besteht aus einer Zeile mit zwei Bindestrichen plus alles nach "boundary =". Also, wenn Ihr Kopf boundary=ABC sagte, sieht die Grenze wie

--ABC 
+0

Dank für Ihre Antwort danken. – Questions

1

In Ihrer Grenzdefinition sind keine Bindestriche erforderlich. Wenn Sie diese Grenze verwenden, um zwei unterschiedliche Körperteile zu trennen, müssen Sie mit zwei Bindestrichen beginnen, gefolgt von Ihrer zuvor definierten Begrenzungszeichenfolge.

Dies wird in RFC 1341 (MIME) erklärt, und Sie finden dort zusätzliche Informationen im Abschnitt Multipart (wie verlinkt).

+0

danke für Ihre Antwort. – Questions

1

Es ist völlig willkürlich.

Der Punkt der Grenze ist, den Anfang und das Ende Ihrer Daten zu definieren. Es spielt keine Rolle, was es ist, solange es nicht Teil des Inhalts ist.

+0

danke für Ihre Antwort. – Questions