Sha*_* Xu 5 jquery file-upload arraybuffer
我正在研究一个需要将大文件上传到服务器端的项目.我决定使用HTML5 FileReader和jQuery以块(ArrayBuffer)上传文件.
我通过将块转换为base64字符串成功完成了此任务,通过jQuery.post使用JSON格式的data参数发送到后端服务器.
例如
$.ajax({
    url: "/Home/Upload",
    type: "POST",
    data: {
        name: block.name,
        index: block.index,
        base64: base64
    },
    processData: true
});
但我想优化此代码,因为base64太大而无法转换.我想知道我是否可以直接发送ArrayBuffer $.ajax.
我知道如果我设置processData: false并将ArrayBuffer放入数据参数,它可以发送到我的服务器端Request.InputStream.但是通过这种方式我无法附加其他数据,例如name和index.
我想知道我可以在一次ajax调用中将原始ArrayBuffer(或blob,二进制文件)与我的其他数据(名称,索引)一起发送.
我想我已经解决了这个问题。我可以使用 FormData 将我的结构化数据单独转换为一种形式的二进制文件。像这样的代码
var blob = file.slice(block.start, block.end);
// 使用 formdata 发送 arraybuffer 中的块内容
var fd = new FormData();
fd.append("name", block.name);
fd.append("index", block.index);
fd.append("file", blob);
$.ajax({
    url: "/Home/UploadInFormData",
    数据:fd,
    过程数据:假,
    contentType: "multipart/form-data",
    类型:“POST”,
    成功:功能(结果){
        如果(!结果。成功){
            警报(结果。错误);
        }
        回调(空,块。索引);
    }
});
然后从服务器端我可以检索我的结构化数据,Request.Form而二进制内容来自Request.Files[0]
| 归档时间: | 
 | 
| 查看次数: | 5266 次 | 
| 最近记录: |