首頁 >後端開發 >php教程 >如何在 Windows Phone 8 中使用 HTTP POST Multipart/Form-Data 上傳檔案和字串資料?

如何在 Windows Phone 8 中使用 HTTP POST Multipart/Form-Data 上傳檔案和字串資料?

Patricia Arquette
Patricia Arquette原創
2024-12-21 01:49:09337瀏覽

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

在Windows Phone 8 中使用HTTP POST 多部分/表單資料將檔案上傳到伺服器

您正在嘗試上傳SQLite 資料庫透過具有multipart/form-data MIME 類型和附加字串資料「userid=SOME_ID」的HTTP POST 請求傳送到PHP Web 服務。但是,您當前的程式碼未按預期工作。

「multipart/form-data」 MIME 類型可以傳輸表單資料以及複雜的二進位資料(例如檔案)。它廣泛用於 Web 應用程式中的文件上傳。

要克服 Windows Phone 8 程式碼中遇到的挑戰,請考慮使用以下內建函數:

  1. CreateFormBodyAsync():函數建立一個具有指定的表單主體content.
  2. HttpUtility.UrlEncode():此函式對「userid」進行 URL 編碼。
  3. HttpRequest.AddString():此函數將「userid」字串加入到請求正文中。

此處是程式碼的改進版本:

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);
}

此修改使用 HttpRequest.AddString() 方法將「userid」字串新增至請求正文中。它還確保文件位元組附加到請求正文的末尾。透過使用這些函數,您可以有效地傳輸 HTTP POST 請求中的檔案和附加字串數據,滿足 multipart/form-data 要求。

以上是如何在 Windows Phone 8 中使用 HTTP POST Multipart/Form-Data 上傳檔案和字串資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn