【问题标题】:Upload Files to ASP.NET Core. Array is always empty将文件上传到 ASP.NET Core。数组始终为空
【发布时间】:2021-06-19 14:08:45
【问题描述】:

我有以下 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--

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

知道我可能缺少什么吗?

【问题讨论】:

  • 嗨@MiguelMoura,有关于这个案例的最新消息吗?

标签: javascript asp.net-core redactor asp.net-core-5.0 redactor.js


【解决方案1】:

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

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

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

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

formData.append("files", imgfile);

【讨论】:

    【解决方案2】:

    你忘了FromForm

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

    【讨论】:

      【解决方案3】:

      问题是 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);
        });
      } 
      

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-22
        • 2017-06-07
        • 1970-01-01
        相关资源
        最近更新 更多