发送blob文件时,FormCollection为null

时间:2017-05-03 15:21:27

标签: javascript asp.net-mvc jquery-file-upload

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

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

    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});
}

1 个答案:

答案 0 :(得分:0)

我几乎从不使用FormCollection,但如果内存服务,它只接受字符串键值对。任何发布的文件都可以在Request.Files集合中找到,或者需要作为HttpPostedFileBase参数单独处理。例如,如果您要发布的所有内容都是此文件,那么您需要做的就是将操作签名更改为:

    public bool pdfSavefile(HttpPostedFileBase data)

如果您确实有其他表单字段要发布,我建议您创建一个视图模型,而不是依赖FormCollection。 MVC模型绑定器是MVC的主要优点之一,你几乎完全使用FormCollection抛弃它。