> 백엔드 개발 > PHP 튜토리얼 > Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 파일을 성공적으로 업로드하고 추가 매개변수를 전달하는 방법은 무엇입니까?

Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 파일을 성공적으로 업로드하고 추가 매개변수를 전달하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-15 00:19:10
원래의
784명이 탐색했습니다.

How to Successfully Upload Files and Pass Additional Parameters with HTTP POST Multipart/Form-Data in Windows Phone 8?

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

Windows Phone 8 애플리케이션을 개발할 때 서버에 파일을 업로드해야 하는 것이 일반적입니다. 이는 multipart/form-data MIME 유형의 HTTP POST를 사용하여 달성할 수 있습니다. 그러나 Windows Phone 8에는 특정 고려 사항이 있습니다.

코드 샘플 및 오류 설명

제공된 코드 샘플은 다음을 사용하여 파일을 업로드하고 문자열 매개 변수("userid=SOME_ID")를 전달하려고 시도합니다. HTTP POST 멀티파트/양식 데이터. 그런데 파일이 성공적으로 업로드되지 않는 문제가 발생합니다.

구체적인 문제는 GetRequestStreamCallback 메서드에 있습니다. request.EndGetRequestStream(asynchronousResult)을 사용하여 요청 스트림을 가져오지만 "userid=some_user_id" 매개변수가 요청에 추가되지 않습니다.

추가 매개변수 전달

" userid"인 경우 multipart/form-data 요청에 대한 경계를 생성해야 합니다. 이 경계는 요청의 다양한 부분(파일 및 추가 매개변수)을 구분합니다.

향상된 코드 샘플

다음은 다중 부분/양식 데이터 요청을 적절하게 처리하고 추가 매개변수를 전달하는 향상된 코드 샘플입니다.

private void HttpPost(byte[] fileBytes, string additionalParam)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");
    httpWebRequest.ContentType = "multipart/form-data; boundary=---------------------------" + DateTime.Now.Ticks.ToString("x");
    httpWebRequest.Method = "POST";
    var asyncResult = httpWebRequest.BeginGetRequestStream((ar) => { GetRequestStreamCallback(ar, fileBytes, additionalParam); }, httpWebRequest);  
}

private void GetRequestStreamCallback(IAsyncResult asynchronousResult, byte[] postData, string additionalParam)  
{
    HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;  
    Stream postStream = request.EndGetRequestStream(asynchronousResult); 

    // Create boundary start string
    string boundaryStart = "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1);

    // Write file content
    string fileBoundary = boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"file\"; filename=\"myfile.db\"" + Environment.NewLine + "Content-Type: application/octet-stream" + Environment.NewLine + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(fileBoundary), 0, fileBoundary.Length);   
    postStream.Write(postData, 0, postData.Length);  

    // Write additional parameter
    string paramBoundary = Environment.NewLine + boundaryStart + Environment.NewLine + "Content-Disposition: form-data; name=\"userid\"" + Environment.NewLine + Environment.NewLine + additionalParam + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(paramBoundary), 0, paramBoundary.Length);   

    // Write boundary end string
    string boundaryEnd = Environment.NewLine + "--" + request.ContentType.Substring(request.ContentType.IndexOf('=') + 1) + "--" + Environment.NewLine;
    postStream.Write(Encoding.UTF8.GetBytes(boundaryEnd), 0, boundaryEnd.Length);  

    postStream.Close();  
    var asyncResult = request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);  
}  
로그인 후 복사

이 지침을 따르면 Windows에서 HTTP POST multipart/form-data를 사용하여 서버에 파일을 성공적으로 업로드하고 추가 매개변수를 전달할 수 있습니다. 폰8 어플리케이션.

위 내용은 Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 파일을 성공적으로 업로드하고 추가 매개변수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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