微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将文件上传到 ASP.NET Core数组始终为空

如何解决将文件上传到 ASP.NET Core数组始终为空

我有以下 Asp.Net Core 5 控制器来上传文件

[HttpPost("files")]
public virtual async Task<IActionResult> Upload(IFormFile[] files) {
}

正在从 Javascript 库上传文件...

我检查了浏览器控制台,发送的请求是:

Request

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWkiZgifAgMo5d8v3
Accept: */*
Referer: http://localhost:5000/admin/files/upload
Origin: http://localhost:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/14.0.3 Safari/605.1.15
X-Requested-With: XMLHttpRequest


Request Data
MIME Type: multipart/form-data
Boundary: ----WebKitFormBoundaryWkiZgifAgMo5d8v3
Request Data: 

  ------WebKitFormBoundaryWkiZgifAgMo5d8v3
  Content-disposition: form-data; name="files[]"; filename="4e540d9d58d4bf6dd7f713e775a8f9bd 2.jpg"
  Content-Type: image/jpeg
  ------WebKitFormBoundaryWkiZgifAgMo5d8v3--

在我的文件控制器中,数组文件没有项目......

知道我可能遗漏了什么吗?

解决方法

在我的文件控制器中,数组文件没有项目

内容配置:表单数据;名称=“文件[]”; filename="4e540d9d58d4bf6dd7f713e775a8f9bd 2.jpg"

在你的代码中,我们可以发现你的action方法Upload接受一个名为files的参数,但是你似乎用files[]设置了表单数据键,导致发布的文件无法绑定到 IFormFile[] files 参数。

要修复它,您可以尝试将表单数据键从 files[] 修改为 files

formData.append("files",imgfile);
,

你忘了df[(~df.astype(bool)).sum(axis=1).le(2)] 1 2 3 4 0 X X X 1 X X X X 3 X X 4 X X X X 5 X X X X

FromForm
,

问题是 Redactor 总是用 [] 发送数据键,例如文件[]。

它允许将名称从 files 更改为其他名称,但始终添加 []。

所以我创建了一个自定义函数......也许对面临同样问题的人有用。

imageUpload: function(data,files,e,upload) {
  data.append('file',files[0]);
  return fetch('/files/images',{
    method: 'POST',body: data
  })
  .then(response => {
    return response.json()
  })
  .then(response => {
    upload.complete(response);
  })
  .catch(response => {
    upload.complete(response);
  });
} 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。