>백엔드 개발 >PHP 튜토리얼 >Windows Phone 8 및 Windows 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일을 효과적으로 업로드하는 방법은 무엇입니까?

Windows Phone 8 및 Windows 8에서 HTTP POST Multipart/Form-Data를 사용하여 서버에 파일을 효과적으로 업로드하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-30 15:25:14712검색

How to Effectively Upload Files to a Server Using HTTP POST Multipart/Form-Data in Windows Phone 8 and Windows 8?

HTTP POST Multipart/Form-Data를 사용하여 서버에 파일 업로드

서버에 파일을 업로드하는 것은 웹 애플리케이션을 개발할 때 일반적인 작업입니다. HTTP POST multipart/form-data는 다른 양식 데이터와 함께 파일을 전송하는 데 사용되는 MIME 유형입니다. 이 문서에서는 Windows Phone 8 및 Windows 8에서 HTTP POST 멀티파트/양식 데이터를 사용하여 파일을 업로드하는 방법에 대한 포괄적인 가이드를 제공하고 코드가 파일을 업로드하지 않거나 오류를 제공하는 일반적인 문제를 해결합니다.

Windows Phone 8 구현

질문의 첫 번째 코드 블록은 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);

Windows 8 구현

질문의 두 번째 코드 블록은 최신 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.