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