Hochladen einer Datei auf einen Server mithilfe von HTTP POST Multipart/Form-Data in Windows Phone 8
Sie versuchen, eine SQLite-Datenbank hochzuladen an einen PHP-Webdienst über eine HTTP-POST-Anfrage mit dem MIME-Typ „multipart/form-data“ und den zusätzlichen String-Daten „userid=SOME_ID“. Ihr aktueller Code funktioniert jedoch nicht wie erwartet.
Der MIME-Typ „multipart/form-data“ ermöglicht die Übertragung von Formulardaten zusammen mit komplexen Binärdaten wie Dateien. Es wird häufig zum Hochladen von Dateien in Webanwendungen verwendet.
Um die Herausforderungen zu meistern, die in Ihrem Windows Phone 8-Code auftreten, sollten Sie die Verwendung der folgenden integrierten Funktionen in Betracht ziehen:
Hier ist eine verbesserte Version Ihres Codes:
async void MainPage_Loaded(object sender, RoutedEventArgs e) { var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.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); } } HttpPost(fileBytes); } private async void HttpPost(byte[] fileBytes) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php"); httpWebRequest.ContentType = "multipart/form-data"; httpWebRequest.Method = "POST"; using (var formBody = new HttpFormBody()) { formBody.AddString("userid", HttpUtility.UrlEncode("SOME_ID")); httpWebRequest.AddString(formBody.CreateFormField()); } using (var dataStream = await httpWebRequest.GetRequestStreamAsync()) { dataStream.Write(fileBytes, 0, fileBytes.Length); dataStream.Close(); } var asyncResult = httpWebRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), httpWebRequest); }
Diese Änderung fügt die Zeichenfolge „userid“ mithilfe der Methode HttpRequest.AddString() zum Anforderungshauptteil hinzu. Es stellt außerdem sicher, dass die Dateibytes an das Ende des Anforderungstexts angehängt werden. Durch die Verwendung dieser Funktionen können Sie sowohl die Datei als auch die zusätzlichen Zeichenfolgendaten effektiv in der HTTP-POST-Anfrage übertragen und so die Multipart-/Formulardatenanforderungen erfüllen.
Das obige ist der detaillierte Inhalt vonWie lade ich eine Datei und String-Daten mithilfe von HTTP POST Multipart/Form-Data in Windows Phone 8 hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!