Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Berjaya Memuat Naik Fail dan Lulus Parameter Tambahan dengan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8?

Bagaimana untuk Berjaya Memuat Naik Fail dan Lulus Parameter Tambahan dengan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8?

Patricia Arquette
Patricia Arquetteasal
2024-12-15 00:19:10794semak imbas

How to Successfully Upload Files and Pass Additional Parameters with HTTP POST Multipart/Form-Data in Windows Phone 8?

Memuat Naik Fail dengan HTTP POST Berbilang Bahagian/Data Borang dalam Windows Phone 8

Apabila membangunkan aplikasi Windows Phone 8, perkara biasa perlu memuat naik fail ke pelayan. Ini boleh dicapai menggunakan HTTP POST dengan jenis MIME multipart/form-data. Walau bagaimanapun, terdapat pertimbangan khusus untuk Windows Phone 8.

Contoh Kod dan Penjelasan Ralat

Sampel kod yang disediakan cuba memuat naik fail dan lulus parameter rentetan ("userid=SOME_ID") menggunakan HTTP POST berbilang bahagian/data-bentuk. Walau bagaimanapun, ia menghadapi isu apabila fail tidak berjaya dimuat naik.

Isu khusus terletak pada kaedah GetRequestStreamCallback. Strim permintaan diperoleh menggunakan request.EndGetRequestStream(asynchronousResult), tetapi parameter "userid=some_user_id" tidak ditambahkan pada permintaan.

Melalui Parameter Tambahan

Untuk menghantar parameter tambahan seperti " userid", adalah perlu untuk membuat sempadan untuk permintaan data berbilang bahagian/bentuk. Sempadan ini memisahkan bahagian permintaan yang berlainan (fail dan parameter tambahan).

Sampel Kod Yang Dipertingkat

Berikut ialah contoh kod yang dipertingkatkan yang mengendalikan permintaan data berbilang bahagian/borang dengan betul dan lulus parameter tambahan:

private void HttpPost(byte[] fileBytes, string additionalParam)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");
    httpWebRequest.ContentType = "multipart/form-data; boundary=---------------------------" + DateTime.Now.Ticks.ToString("x");
    httpWebRequest.Method = "POST";
    var asyncResult = httpWebRequest.BeginGetRequestStream((ar) => { GetRequestStreamCallback(ar, fileBytes, additionalParam); }, httpWebRequest);  
}

private void GetRequestStreamCallback(IAsyncResult asynchronousResult, byte[] postData, string additionalParam)  
{
    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;  
    Stream postStream = request.EndGetRequestStream(asynchronousResult); 

    // Create boundary start string
    string boundaryStart = "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1);

    // Write file content
    string fileBoundary = boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"file\"; filename=\"myfile.db\"" + Environment.NewLine + "Content-Type: application/octet-stream" + Environment.NewLine + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(fileBoundary), 0, fileBoundary.Length);   
    postStream.Write(postData, 0, postData.Length);  

    // Write additional parameter
    string paramBoundary = Environment.NewLine + boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"userid\"" + Environment.NewLine + Environment.NewLine + additionalParam + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(paramBoundary), 0, paramBoundary.Length);   

    // Write boundary end string
    string boundaryEnd = Environment.NewLine + "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1) + "--" + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(boundaryEnd), 0, boundaryEnd.Length);  

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

Dengan mengikuti garis panduan ini, anda boleh berjaya memuat naik fail ke pelayan dan menghantar parameter tambahan menggunakan HTTP SIARAN data berbilang bahagian/borang dalam aplikasi Windows Phone 8.

Atas ialah kandungan terperinci Bagaimana untuk Berjaya Memuat Naik Fail dan Lulus Parameter Tambahan dengan 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