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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-21 01:49:09337검색

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

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

SQLite 데이터베이스를 업로드하려고 합니다. multipart/form-data MIME 유형 및 추가 문자열 데이터 "userid=SOME_ID"를 사용하여 HTTP POST 요청을 통해 PHP 웹 서비스에 연결합니다. 그러나 현재 코드가 예상대로 작동하지 않습니다.

"multipart/form-data" MIME 유형을 사용하면 파일과 같은 복잡한 바이너리 데이터와 함께 양식 데이터를 전송할 수 있습니다. 웹 애플리케이션의 파일 업로드에 널리 사용됩니다.

Windows Phone 8 코드에서 발생하는 문제를 극복하려면 다음 내장 기능을 사용해 보세요.

  1. CreateFormBodyAsync(): 이 함수는 지정된 양식 본문을 생성합니다. content.
  2. HttpUtility.UrlEncode(): 이 함수는 "userid" 문자열을 URL 인코딩합니다.
  3. HttpRequest.AddString(): 이 함수는 함수는 요청에 "userid" 문자열을 추가합니다. body.

다음은 향상된 버전의 코드입니다.

async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.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);
        }
    }

    HttpPost(fileBytes);
}

private async void HttpPost(byte[] fileBytes)
{
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php");
    httpWebRequest.ContentType = "multipart/form-data";
    httpWebRequest.Method = "POST";
    using (var formBody = new HttpFormBody())
    {
        formBody.AddString("userid", HttpUtility.UrlEncode("SOME_ID"));
        httpWebRequest.AddString(formBody.CreateFormField());
    }

    using (var dataStream = await httpWebRequest.GetRequestStreamAsync())
    {
        dataStream.Write(fileBytes, 0, fileBytes.Length);
        dataStream.Close();
    }

    var asyncResult = httpWebRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), httpWebRequest);
}

이 수정에서는 HttpRequest.AddString() 메서드를 사용하여 요청 본문에 "userid" 문자열을 추가합니다. 또한 파일 바이트가 요청 본문 끝에 추가되는지 확인합니다. 이러한 기능을 사용하면 다중 부분/양식 데이터 요구 사항을 충족하면서 HTTP POST 요청에서 파일과 추가 문자열 데이터를 모두 효과적으로 전송할 수 있습니다.

위 내용은 Windows Phone 8에서 HTTP POST Multipart/Form-Data를 사용하여 파일 및 문자열 데이터를 업로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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