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
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!