在Windows Phone 和Windows 8 中使用HTTP POST 多部分/表單資料將檔案上傳到伺服器
將檔案上傳到Web 伺服器是一種行動開發中的常見任務。在本指南中,我們將探索如何使用 Windows Phone 8 和使用本機 API 的 Windows 8 透過 HTTP POST multipart/form-data 來實現此目的。
Windows Phone 8 實作
您嘗試使用帶有 multipart/form-data 的 HTTP POST 將檔案上傳到 PHP Web 服務,但遇到了問題。您的程式碼未如預期傳遞“userid”參數。若要解決此問題,請修改您的程式碼以在表單資料中包含“userid”參數。
以下是如何執行此操作的範例:
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); }
在此程式碼中,「userid」 " 參數與檔案資料一起傳遞。確保您的PHP Web 服務需要此格式的參數。 8,您嘗試使用 HttpClient 和 MultipartFormDataContent上傳文件,但也失敗了。資料的內容類型設定為「application/octet-stream」。 Web 服務已正確配置為處理多部分/表單資料請求。
以上是如何在 Windows Phone 8 和 Windows 8 中使用 HTTP POST Multipart/Form-Data 將檔案上傳到伺服器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!