用body发送arrayBuffer

时间:2014-01-06 14:35:57

标签: 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数据和一个正文。

1 个答案:

答案 0 :(得分:0)

所以我想出了我需要做的事情。

而不是发送正文我需要创建一个新的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);