【问题标题】:FormCollection is null when sending a blob file发送 blob 文件时 FormCollection 为空
【发布时间】:2017-05-03 15:21:27
【问题描述】:

我正在尝试发送大小为“4682933”的 javascript blob 并输入从 Base64String 转换而来的“image/png”。我无法在服务器上检索任何内容。 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});
}

【问题讨论】:

  • 那么,您是否将文件作为 base64 字符串发布到 pdfSavefile 字段 data 下?
  • 如果我没记错的话,formdata 永远不会在 console.log 中显示其内容。
  • @scgough 不,我将其作为表单数据发布,其有效负载是从 Base64String 转换的 blob
  • 在服务器端发布 base64 字符串然后转换为文件(并执行任何操作)是否可行?
  • @xale94 我没有在控制台上查看它。我确实看到我尝试发送的 Blob 数据确实包含以某种方式放置的数据我在服务器端没有收到任何内容

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


【解决方案1】:

我几乎从不使用FormCollection,但如果没有记错的话,它只接受字符串键值对。任何发布的文件要么在Request.Files 集合中找到,要么需要作为HttpPostedFileBase 参数单独处理。例如,如果您发布的只是这个文件,您只需将操作签名更改为:

    public bool pdfSavefile(HttpPostedFileBase data)

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

【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多