Das Hochladen von Dateien auf einen Server ist eine häufige Aufgabe bei der Entwicklung von Webanwendungen. HTTP POST multipart/form-data ist ein MIME-Typ, der zum Übertragen von Dateien zusammen mit anderen Formulardaten verwendet wird. Dieser Artikel bietet eine umfassende Anleitung zum Hochladen von Dateien mithilfe von HTTP POST Multipart/Formulardaten in Windows Phone 8 und Windows 8 und behebt das häufige Problem, dass der Code die Datei nicht hochlädt oder Fehler bereitstellt.
Der erste Codeblock in der Frage versucht, eine SQLite-Datenbank mithilfe von HTTP-POST-Multipart-/Formulardaten in Windows Phone 8 hochzuladen. Der bereitgestellte Code stößt jedoch auf ein Problem, bei dem Das fileBytes-Array ist leer. Dies könnte daran liegen, dass nicht die richtige Methode zum Lesen der Datei aus „IsolatedStorageFile“ verwendet wird.
Um dieses Problem zu beheben, sollten Sie den folgenden Code zum Lesen der Datei verwenden:
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(DBNAME); byte[] fileBytes = null; using (var stream = await file.OpenReadAsync()) { fileBytes = new byte[stream.Size]; using (var reader = new DataReader(stream)) { await reader.LoadAsync((uint)stream.Size); reader.ReadBytes(fileBytes); } }
Ein weiteres Problem ist Übergeben zusätzlicher Daten wie „userid=SOME_ID“ zusammen mit der Datei. Im bereitgestellten Code gibt es keinen Mechanismus zum Übergeben dieser Daten. Um zusätzliche Daten einzuschließen, kann das HttpWebRequest-Objekt wie folgt verwendet werden:
NameValueCollection postData = new NameValueCollection(); postData.Add("userid", "SOME_ID"); byte[] postDataBytes = Encoding.UTF8.GetBytes(postData.ToString()); postStream.Write(postDataBytes, 0, postDataBytes.Length);
Der zweite Codeblock in der Frage verwendet eine neuere API, HttpClient, zum Hochladen von Dateien. Der Code geht jedoch davon aus, dass ein MultipartFormDataContent-Objekt verwendet wird, um sowohl die Datei als auch die zusätzlichen Daten zu kapseln. Diese Annahme ist falsch, da HttpClient das direkte Senden von Multipart-/Formulardatenanforderungen unterstützt, wodurch die Notwendigkeit eines dazwischen liegenden MultipartFormDataContent-Objekts entfällt.
Der folgende Code zeigt, wie eine Datei mit HttpClient in Windows 8 hochgeladen wird:
HttpClient httpClient = new HttpClient(); ByteArrayContent fileContent = new ByteArrayContent(fileBytes); fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); MultipartFormDataContent multiPartContent = new MultipartFormDataContent(); multiPartContent.Add(fileContent, "file", "file.ext"); HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", multiPartContent);
In diesem Beispiel wird das fileContent-Objekt erstellt und den Dateibytes zugewiesen. Der MediaTypeHeaderValue wird verwendet, um den Inhaltstyp der Datei anzugeben. Die Datei wird zusammen mit dem Dateinamen und der Erweiterung zum MultipartFormDataContent-Objekt hinzugefügt. Auf die Antwort vom Server kann durch Überprüfen des HttpResponseMessage-Objekts zugegriffen werden.
In diesem Artikel wurde der Prozess des Hochladens von Dateien auf einen Server mithilfe von HTTP POST Multipart/Formulardaten in Windows Phone untersucht 8 und Windows 8. Durch die Behandlung des Problems leerer Dateibytes und die Bereitstellung alternativer Implementierungen vermittelt dieses Handbuch Entwicklern das Wissen, wie sie Datei-Uploads in ihren Systemen effizient verarbeiten können Anwendungen.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateien mithilfe von HTTP POST Multipart/Form-Data in Windows Phone 8 und Windows 8 effektiv auf einen Server hochladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!