Windows Phone 및 Windows 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일 업로드
웹 서버에 파일을 업로드하는 것은 모바일 개발의 일반적인 작업. 이 가이드에서는 기본 API를 사용하여 Windows Phone 8과 Windows 8을 모두 사용하여 HTTP POST 다중 부분/양식 데이터로 이를 달성하는 방법을 살펴보겠습니다.
Windows Phone 8 구현
multipart/form-data와 함께 HTTP POST를 사용하여 PHP 웹 서비스에 파일을 업로드하려고 했으나 문제가 발생했습니다. 코드가 예상대로 "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 웹 서비스가 이 형식의 매개변수를 예상하는지 확인하세요.
Windows 8 구현
Windows 8의 경우 HttpClient 및 MultipartFormDataContent를 사용하여 파일을 업로드하려고 했습니다. , 하지만 역시 실패했습니다. 문제는 파일 데이터의 잘못된 콘텐츠 유형에 있을 수 있습니다. 올바른 콘텐츠 유형을 지정하도록 코드를 수정하세요.
form.Add(new ByteArrayContent(file_bytes, 0, file_bytes.Length), "file", "hello1.jpg", "application/octet-stream");
이 코드는 파일 데이터에 대한 콘텐츠 유형을 "application/octet-stream"으로 올바르게 설정합니다.
추가 참고 사항
위 내용은 Windows Phone 8 및 Windows 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일을 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!