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

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

Linda Hamilton
リリース: 2024-12-30 15:25:14
オリジナル
710 人が閲覧しました

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 を使用したサーバーへのファイルのアップロード

サーバーへのファイルのアップロードは、Web アプリケーションを開発する場合の一般的なタスクです。 HTTP POST multipart/form-data は、ファイルを他のフォーム データとともに送信するために使用される MIME タイプです。この記事では、Windows Phone 8 および Windows 8 で HTTP POST multipart/form-data を使用してファイルをアップロードするための包括的なガイドを提供し、コードでファイルがアップロードされない、またはエラーが発生するという一般的な問題に対処します。

Windows Phone 8実装

質問の最初のコード ブロックは、Windows Phone 8 で HTTP POST multipart/form-data を使用して SQLite データベースをアップロードしようとします。コードで fileBytes 配列が空になるという問題が発生しました。これは、IsolatedStorageFile からファイルを読み取るための正しい方法が使用されていないことが原因である可能性があります。

この問題を解決するには、次のコードを使用してファイルを読み取ることを検討してください。

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 実装

質問の 2 番目のコード ブロックは、新しい 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 マルチパート/フォームデータを使用してサーバーにファイルを効果的にアップロードする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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