ASP.NET CORE中的Request.Files

时间:2016-04-16 08:15:47

标签: asp.net ajax file upload asp.net-core

我正在尝试使用ajax请求使用aspnet核心上传文件。 在以前的.net版本中,我曾经使用

来处理这个问题
 foreach (string fileName in Request.Files)
            {
                HttpPostedFileBase file = Request.Files[fileName];
                //Save file content goes here

                fName = file.FileName;
     (...)

但现在它在request.files显示错误我怎样才能让它工作?我搜索并发现httppostedfile已更改为iformfile但如何处理request.files?

3 个答案:

答案 0 :(得分:20)

这是最近项目的工作代码。数据已从 Request.Files 移至 Request.Form.Files 。 如果您需要将流转换为字节数组 - 这是唯一适用于我的实现。其他人会返回空数组。

namespace aliasing

答案 1 :(得分:1)

此代码适用于使用常规表单或ajax上传的两个文件的100%:

<h2>Array.length : {{myArray.length}}</h2>
</br>
<button type="button" ng-click="foo({})">Add</button>

答案 2 :(得分:0)

如何结合我提出的两个好的解决方案:

var myBytes  = await GetByteArrayFromImageAsync(Request.Form.Files[0]); 

private async Task<byte[]> GetByteArrayFromImageAsync(IFormFile file)
{
  using (var target = new MemoryStream())
  {
    await file.CopyToAsync(target);
    return target.ToArray();
  }
}