javascript - 发送带有 body 的 arrayBuffer

标签 javascript file-upload xmlhttprequest

我正在尝试使用文件读取器 API 并将数据发送到服务器。到目前为止,我发现我不能再使用 readAsBinaryString (它已被弃用),而是必须使用 readAsArrayBuffer。

我还必须发送带有请求的正文。所以我最初的请求是这样的:

var binaryString= fileData; //populated earlier from readAsBinaryString()

var body = "";
body += ...
body += binaryString;

xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "multipart/form-data;...");
xhr.send();

在执行 arrayBuffer 时我似乎无法使用它。我尝试将 arrayBuffer 转换为字符串,但这对于大文件来说太占用内存。所以我的问题是如何同时发送 arrayBuffer 数据和正文。

最佳答案

所以我弄清楚了我需要做什么。

我需要创建一个新的 FormData() 对象并以这种方式附加它,而不是发送正文。

所以它看起来像这样:

var formDataSend = new FormData();

formDataSend.append("key", "value...");
...
formDataSend.append("file", fileData, "fileName.jpg"); //fileData populated earlier from readAsBinaryString()

xhr.open("POST", url, true);
xhr.send(formDataSend);

关于javascript - 发送带有 body 的 arrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952246/

相关文章:

javascript - 使用评估的变量值而不是实际类型

php - 在 jQuery 选项卡脚本中默认加载选项卡

javascript - 如何为 $ionicActionSheet 中的项目打开新选项卡

javascript - 带有输入参数的 Javascript/PHP 中的 XMLHTTP 请求

typescript - 带有 Typescript 中 Observable 的 XMLHttpRequest

javascript - 监听事件 "close enough"到元素

c# - 将多个文件上传到 Azure Blob 存储

c# - 理解这个 RegEx 语句

spring - Spring MVC REST 的文件上传问题

javascript - 如何获取使用 XMLHttpRequest (XHR2) 下载的 PNG 的像素数据