Javascript 发送blob文件时FormCollection为空

Javascript 发送blob文件时FormCollection为空,javascript,asp.net-mvc,jquery-file-upload,Javascript,Asp.net Mvc,Jquery File Upload,我正在尝试发送一个大小为“4682933”并键入“image/png”的javascript blob,它是从Base64String转换而来的。我无法在服务器上检索任何内容。FormCollection对象始终为空 以下是我向服务器发出客户端请求的代码: var formData = new FormData(); formData.append("data", Blobx); var request = new XMLHttpRequest(); requ

我正在尝试发送一个大小为“4682933”并键入“image/png”的javascript blob,它是从Base64String转换而来的。我无法在服务器上检索任何内容。FormCollection对象始终为空

以下是我向服务器发出客户端请求的代码:

    var formData = new FormData(); 
    formData.append("data", Blobx);
    var request = new XMLHttpRequest(); 
    request.open('POST', '/Patient/pdfSavefile'); 
    request.send(formData);
这是我检索文件的控制器代码

        public bool pdfSavefile(FormCollection formdata)
        {
            var data = formdata["data"];
        }
我的webconfig文件中有以下内容

<httpRuntime targetFramework="4.6.2" maxRequestLength="1048576" requestValidationMode="2.0" executionTimeout="10000" />

我什么都试过了,什么都不管用

将Base64String转换为Blob的代码

function base64ToBlob(base64, mime) 
{
    mime = mime || '';
    var sliceSize = 1024;
    var byteChars = window.atob(base64);
    var byteArrays = [];

    for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) {
        var slice = byteChars.slice(offset, offset + sliceSize);

        var byteNumbers = new Array(slice.length);
        for (var i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
        }

        var byteArray = new Uint8Array(byteNumbers);

        byteArrays.push(byteArray);
    }

    return new Blob(byteArrays, {type: mime});
}
函数base64ToBlob(base64,mime)
{
mime=mime | |'';
var-sliceSize=1024;
var-byteChars=window.atob(base64);
var ByteArray=[];
对于(变量偏移=0,len=byteChars.length;偏移
我几乎从不使用
FormCollection
,但如果内存可用,它只接受字符串-键值对。任何已发布的文件都可以在
请求.files
集合中找到,或者需要作为
HttpPostedFileBase
参数单独处理。例如,如果您发布的只是此文件,那么您需要做的就是将操作签名更改为:

    public bool pdfSavefile(HttpPostedFileBase data)

如果您确实有其他正在发布的表单字段,我建议您创建一个视图模型,而不是依赖
FormCollection
。MVC modelbinder是MVC的主要优点之一,您使用
FormCollection

几乎完全抛弃了它,因此,您是否将文件作为base64字符串发布到
pdfSavefile
字段下的
data
,formdata从不显示在控制台中。请记录其内容。@scgough不,我将其作为表单数据发布,其有效负载是从Base64Strings转换而来的blob。发布base64字符串,然后在服务器端转换为文件(并执行任何操作)是否可行?@xale94我没有在控制台上查看它。我确实看到我试图发送的Blob数据确实包含数据,但我在服务器端没有收到任何东西