如何将HTML5文件条目文件发布到.net核心web api?

如何将HTML5文件条目文件发布到.net核心web api?,html,google-chrome-extension,asp.net-core,upload,Html,Google Chrome Extension,Asp.net Core,Upload,我在玩Chrome扩展。我的扩展名有一个简单的弹出窗口,带有一个按钮,可以从Chrome文件系统读取一个文件,并将该文件发布到.net核心WebAPI function requestUpload() { window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024, function (fs) { fs.root.getFile('ciccio.txt', {}, function (fileEntry) {

我在玩Chrome扩展。我的扩展名有一个简单的弹出窗口,带有一个按钮,可以从Chrome文件系统读取一个文件,并将该文件发布到.net核心WebAPI

function requestUpload() {
  window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024,
    function (fs) {
      fs.root.getFile('ciccio.txt', {}, function (fileEntry) {

        // Get a File object representing the file,
        fileEntry.file(function (files) {

          let xhr = new XMLHttpRequest();
            xhr.open("post", "http://localhost:5000/api/Files/UploadFiles", true);
          xhr.setRequestHeader("Content-Type", "multipart/form-data");
          xhr.setRequestHeader("X-File-Name", files.name);
          xhr.setRequestHeader("X-File-Size", files.size);
          xhr.setRequestHeader("X-File-Type", files.type);
          xhr.send(files);
        }, errorHandler);

      }, errorHandler);
    }, errorHandler);
}
我的WebAPI操作如下:

[HttpPost("UploadFiles")]
public async Task<IActionResult> Post(IFormFile files)
{
    return Ok();
}
我如何解决这个问题

谢谢

调用getFile()获取文件,返回一个文件对象

fs.root.getFile('ciccio.txt', {}, function (fileEntry) {
具有以下重载:

void send();
void send(ArrayBuffer data);
void send(Blob data);
void send(Document data);
void send(DOMString? data);
void send(FormData data);
对象仅为Blob类型,因此它也应该工作。但是,如果您没有使用正确的边界设置内容类型标题,则它看起来是正确的。我认为使用formdata将正常工作

请尝试以下操作,您不需要设置多部分内容类型标题

var formData = new FormData();
formData.append("file", file);
xmlHttpRequest.send(formData);
尝试使用FormData:
var formData = new FormData();
formData.append("file", file);
xmlHttpRequest.send(formData);