서버에 파일을 업로드하는 것은 웹 애플리케이션을 개발할 때 일반적인 작업입니다. HTTP POST multipart/form-data는 다른 양식 데이터와 함께 파일을 전송하는 데 사용되는 MIME 유형입니다. 이 문서에서는 Windows Phone 8 및 Windows 8에서 HTTP POST 멀티파트/양식 데이터를 사용하여 파일을 업로드하는 방법에 대한 포괄적인 가이드를 제공하고 코드가 파일을 업로드하지 않거나 오류를 제공하는 일반적인 문제를 해결합니다.
질문의 첫 번째 코드 블록은 Windows Phone 8에서 HTTP POST multipart/form-data를 사용하여 SQLite 데이터베이스를 업로드하려고 시도합니다. 그러나 제공된 코드에는 다음과 같은 문제가 발생합니다. fileBytes 배열이 비어 있습니다. 이는 TransparentStorageFile에서 파일을 읽는 올바른 방법이 사용되지 않았기 때문일 수 있습니다.
이 문제를 해결하려면 다음 코드를 사용하여 파일을 읽는 것이 좋습니다.
var file = await ApplicationData.Current.LocalFolder.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); } }
또 다른 문제는 다음과 같습니다. 파일과 함께 "userid=SOME_ID"와 같은 추가 데이터를 전달합니다. 제공된 코드에는 이 데이터를 전달하는 메커니즘이 없습니다. 추가 데이터를 포함하려면 HttpWebRequest 개체를 다음과 같이 사용할 수 있습니다.
NameValueCollection postData = new NameValueCollection(); postData.Add("userid", "SOME_ID"); byte[] postDataBytes = Encoding.UTF8.GetBytes(postData.ToString()); postStream.Write(postDataBytes, 0, postDataBytes.Length);
질문의 두 번째 코드 블록은 최신 API인 HttpClient를 사용하여 파일을 업로드합니다. 그러나 코드에서는 파일과 추가 데이터를 모두 캡슐화하는 데 MultipartFormDataContent 개체가 사용된다고 가정합니다. HttpClient는 다중 부분/양식 데이터 요청 전송을 직접 지원하므로 중간 MultipartFormDataContent 개체가 필요하지 않으므로 이 가정은 올바르지 않습니다.
다음 코드는 Windows 8에서 HttpClient를 사용하여 파일을 업로드하는 방법을 보여줍니다.
HttpClient httpClient = new HttpClient(); ByteArrayContent fileContent = new ByteArrayContent(fileBytes); fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); MultipartFormDataContent multiPartContent = new MultipartFormDataContent(); multiPartContent.Add(fileContent, "file", "file.ext"); HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", multiPartContent);
이 예에서는 fileContent 개체가 생성되고 파일 바이트가 할당됩니다. MediaTypeHeaderValue는 파일의 콘텐츠 유형을 지정하는 데 사용됩니다. 파일은 파일 이름 및 확장명과 함께 MultipartFormDataContent 개체에 추가됩니다. 서버의 응답은 HttpResponseMessage 개체를 확인하여 액세스할 수 있습니다.
이 기사에서는 Windows Phone에서 HTTP POST multipart/form-data를 사용하여 서버에 파일을 업로드하는 프로세스를 살펴보았습니다. 8 및 Windows 8. 빈 fileBytes 문제를 해결하고 대체 구현을 제공함으로써 이 가이드는 개발자에게 애플리케이션에서 파일 업로드를 효율적으로 처리할 수 있는 지식을 제공합니다.
위 내용은 Windows Phone 8 및 Windows 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일을 효과적으로 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!