ファイルを受け入れる方法 POST 質問する

ファイルを受け入れる方法 POST 質問する

私は REST サービスを構築するために asp.net mvc 4 webapi beta を使用しています。クライアント アプリケーションから POST された画像/ファイルを受け入れる必要があります。これは webapi を使用して可能ですか? 以下は現在使用しているアクションです。これがどのように動作するかの例を知っている人はいますか?

[HttpPost]
public string ProfileImagePost(HttpPostedFile profileImage)
{
    string[] extensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
    if (!extensions.Any(x => x.Equals(Path.GetExtension(profileImage.FileName.ToLower()), StringComparison.OrdinalIgnoreCase)))
    {
        throw new HttpResponseException("Invalid file type.", HttpStatusCode.BadRequest);
    }

    // Other code goes here

    return "/path/to/image.png";
}

ベストアンサー1

皆さんの多くがファイルをサーバー上に保存したいと考えていることに驚きました。すべてをメモリ内に保存する解決策は次のとおりです。

[HttpPost("api/upload")]
public async Task<IHttpActionResult> Upload()
{
    if (!Request.Content.IsMimeMultipartContent())
        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 

    var provider = new MultipartMemoryStreamProvider();
    await Request.Content.ReadAsMultipartAsync(provider);
    foreach (var file in provider.Contents)
    {
        var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
        var buffer = await file.ReadAsByteArrayAsync();
        //Do whatever you want with filename and its binary data.
    }

    return Ok();
}

おすすめ記事