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

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

Linda Hamilton
풀어 주다: 2024-12-08 11:51:12
원래의
693명이 탐색했습니다.

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿