Content-Disposition 在 web api 2 中始终为 null
Content-Disposition is always null in web api 2
我有一个非常简单的表格:
<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
总是空的所以我不能访问文件名。我在请求对象中没有看到任何其他 属性 来获取文件名。
最让我困惑的是用 chrome 调试器检查请求显示以下详细信息
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
}
我有一个非常简单的表格:
<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
总是空的所以我不能访问文件名。我在请求对象中没有看到任何其他 属性 来获取文件名。
最让我困惑的是用 chrome 调试器检查请求显示以下详细信息
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
}