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

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

Linda Hamilton
Linda Hamiltonasal
2024-12-08 11:51:12690semak imbas

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

Muat naik Fail ke Pelayan dengan HTTP POST Multipart/Form-Data dalam Windows Phone dan Windows 8

Memuat naik fail ke pelayan web adalah tugas biasa dalam pembangunan mudah alih. Dalam panduan ini, kami akan meneroka cara untuk mencapai ini dengan HTTP POST berbilang bahagian/data borang menggunakan Windows Phone 8 dan Windows 8 menggunakan API asli.

Pelaksanaan Windows Phone 8

Anda cuba memuat naik fail ke perkhidmatan web PHP anda menggunakan HTTP POST dengan data berbilang bahagian/borang, tetapi menghadapi masalah. Kod anda tidak melepasi parameter "userid" seperti yang diharapkan. Untuk menyelesaikan masalah ini, ubah suai kod anda untuk memasukkan parameter "userid" dalam data borang.

Berikut ialah contoh cara untuk melakukannya:

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

Dalam kod ini, "userid " parameter diluluskan bersama dengan data fail. Pastikan perkhidmatan web PHP anda menjangkakan parameter dalam format ini.

Pelaksanaan Windows 8

Untuk Windows 8, anda cuba menggunakan HttpClient dan MultipartFormDataContent untuk memuat naik fail , tetapi ia juga gagal. Isunya mungkin terletak pada jenis kandungan yang salah untuk data fail. Ubah suai kod anda untuk menentukan jenis kandungan yang betul:

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

Kod ini menetapkan jenis kandungan dengan betul kepada "aplikasi/oktet-strim" untuk data fail.

Nota Tambahan

  • Pastikan perkhidmatan web anda dikonfigurasikan dengan betul untuk mengendalikan data berbilang bahagian/borang permintaan.
  • Uji pelaksanaan anda dengan teliti untuk memastikan data dimuat naik dengan jayanya dan tanpa kehilangan data atau rasuah.

Atas ialah kandungan terperinci Bagaimana untuk Muat Naik Fail ke Pelayan Menggunakan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8 dan Windows 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