ホームページ > バックエンド開発 > PHPチュートリアル > Windows Phone 8 および Windows 8 で HTTP POST マルチパート/フォームデータを使用してサーバーにファイルをアップロードする方法

Windows Phone 8 および Windows 8 で HTTP POST マルチパート/フォームデータを使用してサーバーにファイルをアップロードする方法

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 マルチパート/フォーム データを使用したファイルのサーバーへのアップロード

Web サーバーへのファイルのアップロードは、モバイル開発における一般的なタスク。このガイドでは、Windows Phone 8 とネイティブ API を使用する Windows 8 の両方を使用して、HTTP POST multipart/form-data でこれを実現する方法を説明します。

Windows Phone 8 の実装

multipart/form-data を指定した HTTP POST を使用して PHP Web サービスにファイルをアップロードしようとしましたが、問題が発生しました。コードは期待どおりに「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 Web サービスがこの形式のパラメーターを想定していることを確認してください。

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」に正しく設定します。

追加メモ

  • Web サービスが multipart/form-data を処理するように適切に構成されていることを確認してください
  • 実装を徹底的にテストして、データが正常にアップロードされ、データの損失や破損がないことを確認します。

以上がWindows Phone 8 および Windows 8 で HTTP POST マルチパート/フォームデータを使用してサーバーにファイルをアップロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート