我正在尝试使用文件读取器 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/