如何将HTML5文件条目文件发布到.net核心web api?
我在玩Chrome扩展。我的扩展名有一个简单的弹出窗口,带有一个按钮,可以从Chrome文件系统读取一个文件,并将该文件发布到.net核心WebAPI如何将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) {
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);