Was ist die Grenze in Multipart / Form-Daten?
Möchte ich Fragen, eine Frage, über die multipart/form-data
. Im HTTP-header, finde ich, dass die Content-Type: multipart/form-data; boundary=???
.
Ist die ???
frei vom Benutzer definiert werden? Oder ist es in der Regel aus dem HTML? Ist es möglich für mich zu definieren, die ??? = abcdefg
?
InformationsquelleAutor der Frage Questions | 2010-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja.
Nicht. HTML hat nichts zu tun. Lesen Sie weiter unten.
Ja.
Wenn Sie möchten, senden Sie die folgenden Daten an den web-server:
mit
application/x-www-form-urlencoded
würde wie folgt Aussehen:Wie Sie sehen können, erkennt der server, dass die Parameter werden getrennt durch ein kaufmännisches und-Zeichen
&
. Wenn&
ist erforderlich für einen parameter-Wert, dann muss es codiert werden.Also wie soll der server wissen, wo ein parameter-Wert beginnt und endet, wenn er eine HTTP-Anforderung empfängt mit
multipart/form-data
?Mithilfe der Grenzeähnlich
&
.Beispiel:
In diesem Fall die Grenze Wert ist
XXX
. Geben Sie es in dieContent-Type
- header, so dass der server weiß, wie split die Daten, die es erhält.So, müssen Sie zu:
Einen Wert verwenden, erscheinen nicht in den HTTP-Daten an den server gesendet.
Konsequent sein und den gleichen Wert überall in der request-message.
InformationsquelleAutor der Antwort Oscar Mederos
Die genaue Antwort auf die Frage ist: ja, Sie können einen beliebigen Wert für die
boundary
parameterda ist es nicht mehr als 70 bytes lang und besteht nur aus 7-bitUS-ASCII
(druckbare) Zeichen.Wenn Sie mit einer
multipart/*
content-Typen, Sie sind eigentlich erforderlich angeben, dieboundary
parameter in derContent-Type
header, ansonsten wird der server (im Fall einer HTTP-Anfrage) werden nicht in der Lage zu analysieren, die Nutzlast.Du wahrscheinlich auch wollen, um die
charset
parameterUTF-8
in IhremContent-Type
header, es sei denn, Sie werden absolut sicher, dass nurUS-ASCII
charset verwendet werden in den payload-Daten.Einige relevante Auszüge aus der RFC2046:
4.1.2. Charset-Parameter:
5.1. Medientyp Multipart
Hier ist ein Beispiel mit einem beliebigen Randbedingungen:
InformationsquelleAutor der Antwort U-D13
multipart/form-data enthält Grenze zu trennen der name/Wert-Paaren. Die Grenze wirkt wie eine Markierung von jeder chunk von name/Wert-Paare übergeben werden, wenn ein Formular vorgelegt wird. Die Grenze, wird automatisch der content-type der Anfrage-header.
Form mit enctype="multipart/form-data" Attribut wird eine request-header Content-Type : multipart/form-data; boundary --- WebKit193844043-h (browser generiert vaue).
Die payload übergeben, sieht ungefähr so aus:
Auf der webservice-Seite, es verbraucht im @Consumes("multipart/form-data") zu bilden.
Vorsicht, beim testen der webservice mit chrome Briefträger, müssen Sie die option Formulardaten(radio-Taste) und Menü Datei aus der dropdown-box zu senden Anlage. Explizite Bestimmung der content-type als " multipart/form-data wirft einen Fehler. Weil die Begrenzung fehlt, so überschreibt es die curl-Anfrage von post-Mann-server mit content-Typ durch anfügen der Grenze, die funktioniert einwandfrei.
Sehen RFC1341 sec7.2 Der Multipart-Content-Type
InformationsquelleAutor der Antwort Yergalem