Heim >Backend-Entwicklung >PHP-Tutorial >Wie lade ich eine Datei und String-Daten mithilfe von HTTP POST Multipart/Form-Data in Windows Phone 8 hoch?

Wie lade ich eine Datei und String-Daten mithilfe von HTTP POST Multipart/Form-Data in Windows Phone 8 hoch?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-21 01:49:09334Durchsuche

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

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:

  1. CreateFormBodyAsync(): Diese Funktion erstellt einen Formularkörper mit dem angegebenen Inhalt.
  2. HttpUtility.UrlEncode(): Diese Funktion URL-codiert die Zeichenfolge „userid“.
  3. HttpRequest.AddString(): Dies Die Funktion fügt der Anfrage die Zeichenfolge „userid“ hinzu Hauptteil.

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!

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