我试图让ajax文件上传工作,但我正在努力解决我在这里找到的一个例子,但是尝试谷歌这个错误并没有产生任何相关性。
var formData = new FormData($('#frmBreakdownItem')[0]);
formData.append('Document', file);
这会导致Chrome控制台出现以下错误;
Uncaught TypeError: formData.append is not a function
at jQuery.fn.init.callback (14:1336)
at processCallback (bootbox.js:86)
at HTMLButtonElement.<anonymous> (bootbox.js:568)
at HTMLDivElement.dispatch (jquery-3.1.1.js:5201)
at HTMLDivElement.elemData.handle (jquery-3.1.1.js:5009)
我也尝试继续使用FileReader(),当我得到一个字节数组时,我相信某些进程正在破坏/删除数据,导致上传的文件变得不可读。
我的代码使用FileReader()
var file = document.getElementById('Document').files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function (event) {
var result = event.target.result;
var fileName = file.name;
var fileMimetype = file.type;
$.post(
url,
{
id: breakdownItemId,
data: result,
mime: fileMimetype,
name: fileName
},
function (response) {
console.log(response);
}
);
...在我的控制器(C#MVC ASP.NET)中,我将转换后的字节数组存储起来:
byte[] fileBytes = Encoding.UTF8.GetBytes(data);
我将此文件存储在Azure Blob Storage中,该文件将文件检测为内容类型application/octet-stream
。
使用MS Storage Explorer将同一文件上载到同一blob存储容器,可以存储具有不同大小和正确内容类型的文件。
我现在完全不知道接下来要做什么。
答案 0 :(得分:0)
我发现问题到底是什么..
我们使用的另一个库使用名为FormData
FormData() { ... }
重命名该功能已解决问题。