Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Muat Naik Fail dan Data Rentetan Menggunakan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8?

Bagaimana untuk Muat Naik Fail dan Data Rentetan Menggunakan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8?

Patricia Arquette
Patricia Arquetteasal
2024-12-21 01:49:09387semak imbas

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

Memuat Naik Fail ke Pelayan Menggunakan HTTP POST Multipart/Form-Data dalam Windows Phone 8

Anda sedang cuba memuat naik pangkalan data SQLite ke perkhidmatan web PHP melalui permintaan HTTP POST dengan jenis MIME multipart/form-data dan data rentetan tambahan "userid=SOME_ID." Walau bagaimanapun, kod semasa anda tidak berfungsi seperti yang diharapkan.

"multipart/form-data" Jenis MIME membolehkan penghantaran data borang bersama-sama dengan data binari kompleks seperti fail. Ia digunakan secara meluas untuk muat naik fail dalam aplikasi web.

Untuk mengatasi cabaran yang dihadapi dalam kod Windows Phone 8 anda, pertimbangkan untuk menggunakan fungsi terbina dalam berikut:

  1. CreateFormBodyAsync(): Fungsi ini mencipta badan borang dengan yang ditentukan kandungan.
  2. HttpUtility.UrlEncode(): URL fungsi ini mengekod rentetan "userid".
  3. HttpRequest.AddString(): Ini fungsi menambah rentetan "userid" pada permintaan body.

Berikut ialah versi kod anda yang dipertingkatkan:

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

Pengubahsuaian ini menambahkan rentetan "userid" pada badan permintaan menggunakan kaedah HttpRequest.AddString(). Ia juga memastikan bahawa bait fail dilampirkan pada penghujung badan permintaan. Dengan menggunakan fungsi ini, anda boleh menghantar kedua-dua fail dan data rentetan tambahan dengan berkesan dalam permintaan HTTP POST, memenuhi keperluan data berbilang bahagian/borang.

Atas ialah kandungan terperinci Bagaimana untuk Muat Naik Fail dan Data Rentetan Menggunakan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn