在 ASP.Net Core 6.0 中使用 jquery 将文件输入内容发布到控制器操作时遇到问题

问题描述 投票:0回答:1

我试图将文件发布到控制器操作以保存它,但在使用 $.post 发布数据时遇到了两个不同的问题,如下所示:

$("#setting-form").on("submit", function(event) {
  var formData = new FormData();
  if (document.getElementById('site-error-image-input').files[0] != null) {
    var file = document.getElementById('site-error-image-input').files[0];
    formData.append("image", file);
    console.log(formData);
    $.post("/Admin/Home/SaveSiteErrorImage/", {
      files: formData
    }, function(response) {
      var filePathInput = document.getElementsByName("Settings[64].SettingString")[0];
      filePathInput.setAttribute("value", response);
    });
  }
});

控制器操作不接收文件,当使用 $.ajax 发布数据时,如下所示:

$("#setting-form").on("submit", function(event) {
  var formData = new FormData();
  if (document.getElementById('site-error-image-input').files[0] != null) {
    var file = document.getElementById('site-error-image-input').files[0];
    formData.append("image", file);
    console.log(formData);
    $.ajax({
      type: 'post',
      url: '/Admin/Home/SaveSiteErrorImage',
      data: formData,
      processData: false,
      contentType: false
    }).done(function(result) {
      if (result != '') {
        var filePathInput = document.getElementsByName("Settings[64].SettingString")[0];
        filePathInput.setAttribute("value", response);
      }
    });
  }
});

我收到此 JavaScript 错误:“未捕获类型错误:在未实现 FormData 接口的对象上调用了‘append’。”

控制器动作:

public string SaveSiteErrorImage(IList<IFormFile> files)

我尝试按照上述方式更改帖子的格式,但没有成功。

javascript jquery ajax asp.net-mvc .net-6.0
1个回答
0
投票

控制器中的参数是“files”所以应该是

formData.append("files", file);

$ajax 设置应该是

data: form,

修改后控制器将接收文件
enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.