C/Sアプリケーションがあります。サーバーをAsp.NetMVC4.0で実装し、クライアントは.Net4.5で実行されます。
サーバー側にコントローラーアクションがあります。次のようになります。
public JsonResult Upload(string arg1, int arg2)
{
//do something about arg1 and arg2 here
...
var files = Request.Files;
if (files.Count > 0)
{
foreach(var file in files)
{
var ms = new MemoryStream();
file.InputStream.CopyTo(ms);
//save it to somewhere
...
}
}
...
}
ブラウザでテストするためのテストHTMLページを作成しました。期待通りに動作しました。
クライアント側では、HttpClientクラスを使用しますが、ファイルのアップロードが必要ない場合は完全に機能しました。しかし、何日も調査した後でも、IISExpressを実行しているデバッグマシンでこれを解決することはできません。すべての手がかりがにつながることがわかりましたがMultipartFormDataContent
、それらのサンプルコードをコピーしても、サーバー側はまだ何も取得できず、すべての引数は空であり、ファイルはありませんRequest.Files
。以前は、ファイルのアップロードに機能するHttpWebRequestに基づく独自のhttpヘルパークラスを持っていましたが、この新しいプロジェクトではHttpClientを使用することを好みます。
では、HttpClientを使用してサーバーにファイルをアップロードするにはどうすればよいですか?