Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일 업로드
SQLite 데이터베이스를 업로드하려고 합니다. multipart/form-data MIME 유형 및 추가 문자열 데이터 "userid=SOME_ID"를 사용하여 HTTP POST 요청을 통해 PHP 웹 서비스에 연결합니다. 그러나 현재 코드가 예상대로 작동하지 않습니다.
"multipart/form-data" MIME 유형을 사용하면 파일과 같은 복잡한 바이너리 데이터와 함께 양식 데이터를 전송할 수 있습니다. 웹 애플리케이션의 파일 업로드에 널리 사용됩니다.
Windows Phone 8 코드에서 발생하는 문제를 극복하려면 다음 내장 기능을 사용해 보세요.
다음은 향상된 버전의 코드입니다.
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); }
이 수정에서는 HttpRequest.AddString() 메서드를 사용하여 요청 본문에 "userid" 문자열을 추가합니다. 또한 파일 바이트가 요청 본문 끝에 추가되는지 확인합니다. 이러한 기능을 사용하면 다중 부분/양식 데이터 요구 사항을 충족하면서 HTTP POST 요청에서 파일과 추가 문자열 데이터를 모두 효과적으로 전송할 수 있습니다.
위 내용은 Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 파일 및 문자열 데이터를 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!