我正在尝试使用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?
答案 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();
}
}