Heim >Backend-Entwicklung >PHP-Tutorial >Wie lade ich Dateien mit HTTP POST Multipart/Form-Data in Windows Phone 8 und Windows 8 auf einen Server hoch?

Wie lade ich Dateien mit HTTP POST Multipart/Form-Data in Windows Phone 8 und Windows 8 auf einen Server hoch?

Linda Hamilton
Linda HamiltonOriginal
2024-12-08 11:51:12692Durchsuche

How to Upload Files to a Server Using HTTP POST Multipart/Form-Data in Windows Phone 8 and Windows 8?

Datei mit HTTP POST Multipart/Form-Data in Windows Phone und Windows 8 auf einen Server hochladen

Das Hochladen von Dateien auf einen Webserver ist eine häufige Aufgabe in der mobilen Entwicklung. In diesem Leitfaden erfahren Sie, wie Sie dies mit HTTP-POST-Multipart-/Formulardaten sowohl unter Windows Phone 8 als auch unter Windows 8 mithilfe nativer APIs erreichen können.

Windows Phone 8-Implementierung

Sie haben versucht, eine Datei mithilfe von HTTP POST mit Multipart-/Formulardaten auf Ihren PHP-Webdienst hochzuladen, sind dabei jedoch auf Probleme gestoßen. Ihr Code übergibt den Parameter „userid“ nicht wie erwartet. Um dieses Problem zu beheben, ändern Sie Ihren Code so, dass er den Parameter „userid“ in die Formulardaten einschließt.

Hier ist ein Beispiel dafür:

private void GetRequestStreamCallback(IAsyncResult asynchronousResult, byte[] postData)
{
    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
    Stream postStream = request.EndGetRequestStream(asynchronousResult);
    string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
    byte[] boundary_bytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

    // Write the "userid" parameter
    postStream.Write(boundary_bytes, 0, boundary_bytes.Length);
    byte[] userid_bytes = Encoding.ASCII.GetBytes("Content-Disposition: form-data; name=\"userid\"\r\n\r\n" + "SOME_ID" + "\r\n");
    postStream.Write(userid_bytes, 0, userid_bytes.Length);

    // Write the file data
    postStream.Write(boundary_bytes, 0, boundary_bytes.Length);
    byte[] file_content_disposition_bytes = Encoding.ASCII.GetBytes("Content-Disposition: form-data; name=\"file\"; filename=\"database.sqlite\"\r\nContent-Type: application/octet-stream\r\n\r\n");
    postStream.Write(file_content_disposition_bytes, 0, file_content_disposition_bytes.Length);
    postStream.Write(postData, 0, postData.Length);

    // Write the ending boundary
    postStream.Write(boundary_bytes, 0, boundary_bytes.Length);
    byte[] end_boundary = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
    postStream.Write(end_boundary, 0, end_boundary.Length);

    postStream.Close();

    var asyncResult = request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}

In diesem Code ist der Parameter „userid Der Parameter „wird zusammen mit den Dateidaten übergeben. Stellen Sie sicher, dass Ihr PHP-Webdienst die Parameter in diesem Format erwartet.

Windows 8-Implementierung

Für Windows 8 haben Sie versucht, HttpClient und MultipartFormDataContent zum Hochladen der Datei zu verwenden , aber es ist auch gescheitert. Das Problem liegt möglicherweise im falschen Inhaltstyp für die Dateidaten. Ändern Sie Ihren Code, um den richtigen Inhaltstyp anzugeben:

form.Add(new ByteArrayContent(file_bytes, 0, file_bytes.Length), "file", "hello1.jpg", "application/octet-stream");

Dieser Code setzt den Inhaltstyp für die Dateidaten korrekt auf „application/octet-stream“.

Zusätzliche Hinweise

  • Stellen Sie sicher, dass Ihr Webdienst ordnungsgemäß für die Verarbeitung von Multipart-/Formulardaten konfiguriert ist Anfragen.
  • Testen Sie Ihre Implementierung gründlich, um sicherzustellen, dass die Daten erfolgreich und ohne Datenverlust oder Beschädigung hochgeladen werden.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mit HTTP POST Multipart/Form-Data in Windows Phone 8 und Windows 8 auf einen Server hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn