gpt4 book ai didi

jquery - 通过 jQuery 在一次 Ajax 调用中发送 ArrayBuffer 和其他字符串

转载 作者:行者123 更新时间:2023-12-03 23:05:33 24 4
gpt4 key购买 nike

我正在开发一个项目,需要将大文件上传到服务器端。我决定使用 HTML5 FileReader 和 jQuery 分块上传文件 (ArrayBuffer)。

我成功完成了这个任务,将 block 转换为base64字符串,通过jQuery.post发送到后端服务器,数据参数为JSON格式。

例如

$.ajax({
url: "/Home/Upload",
type: "POST",
data: {
name: block.name,
index: block.index,
base64: base64
},
processData: true
});

但是我想优化这段代码,因为 base64 太大而无法转换。我想知道是否可以直接通过 $.ajax 发送 ArrayBuffer。

我知道,如果我设置 processData: false 并将 ArrayBuffer 放入数据参数中,它可以作为 Request.InputStream 发送到我的服务器端。但这样我就无法附加其他数据,例如 nameindex

我想知道我是否可以在一次 ajax 调用中将原始 ArrayBuffer(或 blob、二进制)与其他数据(名称、索引)一起发送。

最佳答案

我想我已经解决了这个问题。我可以使用 FormData 将结构化数据与文件二进制文件以一种形式进行转换。代码如下

var blob = file.slice(block.start, block.end);// use formdata to send block content in arraybuffervar fd = new FormData();fd.append("name", block.name);fd.append("index", block.index);fd.append("file", blob);$.ajax({    url: "/Home/UploadInFormData",    data: fd,    processData: false,    contentType: "multipart/form-data",    type: "POST",    success: function (result) {        if (!result.success) {            alert(result.error);        }        callback(null, block.index);    }});

然后,从服务器端,我可以从 Request.Form 检索结构化数据,同时从 Request.Files[0] 检索二进制内容

关于jquery - 通过 jQuery 在一次 Ajax 调用中发送 ArrayBuffer 和其他字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com