formData.append不是一个函数

时间:2018-04-04 14:58:41

标签: c# jquery ajax asp.net-mvc

我试图让ajax文件上传工作,但我正在努力解决我在这里找到的一个例子,但是尝试谷歌这个错误并没有产生任何相关性。

原始示例:jQuery Ajax File Upload

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存储容器,可以存储具有不同大小和正确内容类型的文件。

我现在完全不知道接下来要做什么。

1 个答案:

答案 0 :(得分:0)

我发现问题到底是什么.. 我们使用的另一个库使用名为FormData

的函数覆盖默认的FormData() { ... }

重命名该功能已解决问题。