Disposition始终为null

Disposition始终为null

我有一个非常简单的表格:

<form id="upload" enctype="multipart/form-data" action="~/Api/File/Post" method="post" >
    <input type="file" name="files[0].media" />
    <input type="submit" value="Submit" />
</form>


调试时,我得到文件,但是fileData.Headers.ContentDisposition始终为null,因此无法访问文件名。我没有在Request对象中看到任何其他属性来获取文件名。

最让我感到困惑的是使用chromes调试器检查请求显示了以下详细信息

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Content-Type:multipart/form-data; boundary=----WebKitFormBoundary3rLRRBQX6jj7MbWU
------WebKitFormBoundary3rLRRBQX6jj7MbWU
Content-Disposition: form-data; name="files[0].media"; filename="MyFileName.mp4"
Content-Type: video/mp4


------WebKitFormBoundary3rLRRBQX6jj7MbWU--


有任何想法吗?看起来好像发送正确...(上面示例中的文件名已删除)

最佳答案

给定问题中提供的html表单,您应该可以使用以下代码访问文件数据:

[HttpPost]
public async Task<IHttpActionResult> Post()
{
    if (!Request.Content.IsMimeMultipartContent())
    {
        return this.StatusCode(HttpStatusCode.UnsupportedMediaType);
    }

    var filesProvider = await Request.Content.ReadAsMultipartAsync();
    var fileContents = filesProvider.Contents.FirstOrDefault();
    if (fileContents == null)
    {
        return this.BadRequest("Missing file");
    }

    var headers = fileContents.Headers;
    string filename = headers.ContentDisposition.FileName;
    Stream fileStream = await fileContents.ReadAsStreamAsync();

    ... do something with the file name and stream
}

关于c# - 在Web API 2中Content-Disposition始终为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36373740/

10-13 03:13