サーバーへのファイルの投稿をサポートする次の .net Web API コントローラー メソッドがあります。
public Task<HttpResponseMessage> PostFile()
{
var request = Request;
if (!request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType));
}
var root = HttpContext.Current.Server.MapPath("~/App_Data/Uploads");
var provider = new MultipartFileStreamProvider(root);
var task = request.Content.ReadAsMultipartAsy
nc(provider).ContinueWith(o =>
{
var finfo = new FileInfo(provider.FileData.First().LocalFileName);
var guid = Guid.NewGuid().ToString();
File.Move(finfo.FullName,
Path.Combine(root,
guid + "_" + provider.FileData.First().Headers.ContentDisposition.FileName.Replace("\"", "")));
return new HttpResponseMessage
{
Content = new StringContent("File upload.")
};
});
return task;
}
これはうまく機能しますが、投稿の一部としてファイルに関するメタデータを含めることができるようにしたいと考えています。現時点では、次のようなメタデータ用の別の Web API メソッドがあります。
public HttpResponseMessage PostTAG(TAG tag)
タグ オブジェクトの情報を取得し、データベースに保存します。ファイルとメタデータを 1 回のリクエストで一緒に送信できれば、API クライアントにとってはるかに簡単になります。これは .net Web API で可能ですか。