2010-12-23 10 views
0

Ich muss bestimmte Daten an den Server in einem. Zip-Archiv, über HTTP-POST-Anfrage, MIME-codiert senden. Ich nehme an, das bedeutet nur, dass ich MIME-Typ in einem Anfrage-Header angeben muss. Aber ich bin verwirrt darüber, was ich in den Körper der Anfrage einfügen soll. Bisher kann ich zwei Möglichkeiten zu sehen, es zu tun:Wie MIME über HTTP senden?

  1. Normalerweise, wie ich es nehmen (sorry, ich bin kein Web-Coder, so ein bisschen lahm mit HTTP), Körper-POST-Anforderung von Paaren besteht parameter_name = einige + Daten geteilt durch "&". Soll ich es genauso machen und den Inhalt meiner Datei in base64 in einen der Parameter schreiben? Das würde mir auch zusätzliche Parameter liefern.

  2. Oder sollte ich nur füllen POST Körper mit Inhalt meiner Datei (in base64, richtig?)? Wenn ja, gibt es eine Möglichkeit, zusätzliche Informationen über die Datei bereitzustellen?

Ist nur eine dieser Möglichkeiten annehmbar oder beides? Wenn ja, was wäre die beste Praxis?

, auch Beispielcode in C++ für Qt wären sehr-sehr geschätzt, aber absolut nicht notwendig :)

+0

pls, überprüfen Sie, ob dieser Beitrag http://stackoverflow.com/ Fragen/2627949/Upload-Datei-mit-Post-Methode-auf-qt4/2634842 # 2634842 wäre keine Hilfe für Sie –

Antwort

2

Der gesamte Schlüssel = Wert Körper in POST-Anfragen sind nur für, wenn Sie Formulardaten senden zu dein Server. Wenn Sie nur den Inhalt einer ZIP-Datei POST senden möchten, können Sie dies einfach als Hauptteil Ihres POSTs senden. Sie müssen ihn nicht wie einen Formularbeitrag einrichten, wie Sie ihn beschreiben. Sie können die folgenden Header in der Anforderung gesetzt:

Content-Type: application/zip 
Content-Disposition: attachment; filename=myzip.zip 

Sie haben nicht einmal unbedingt zu base64 den Körper kodieren, obwohl Sie sollten, wenn das ist, was der Server erwartet.

Die Content-Disposition ist die Sache, die Sie mehr über Ihren Datei-Upload beschreiben müssen. Sie können einige Details darüber finden Sie hier:

http://en.wikipedia.org/wiki/MIME#Content-Disposition

und hier

http://www.ietf.org/rfc/rfc2183.txt

auf der Serverseite, Sie müssen nur einige Code schreiben, die die Antwort Körper in seiner entirity bekommen (Das ist einfach, obwohl YMMV je nach Sprache und Framework), und behandeln Sie es wie Sie wollen.

Für eine reale Welt Beispiel könnten Sie finden es nützlich zu betrachten, sagen wir, AtomPub, wie dies geschehen ist:

http://bitworking.org/projects/atom/rfc5023.html