我想使用XMLHttpRequest发送一个多部分表单。我要附加的文件是一个jpg文件。将文件附加到FormData对象可以正常工作。
但是我想在发送之前处理图片文件。因此,我有一个库,它将Uint8Array作为输入和输出。所以我将处理后的图像作为UInt8Array。
我尝试使用
form.append("picture", new Blob(fileAsArray, {type: "image/jpg"} ));
但它会创建一个八位字节/流。 那么如何通过XMLHttpRequest multipart / form发送Uint8Array,以便服务器看到与发送文件对象时相同的内容?
答案 0 :(得分:5)
请注意,Blob
constructor将数组类型化数组(或其他来源)作为参数。试试
form.append("picture", new Blob([fileAsArray], {type: "image/jpg"} ));
答案 1 :(得分:0)
可能不是直接回答该问题,但是我创建了一个函数,用于将ArrayBuffer作为文件上传,而不使用XMLHttpRequest,而是使用fetch。
这是我的Javascript Fetch版本:
function uploadArrayBufferRawImage(arraybuffer)
{
var formData = new FormData();
formData.append("image",
new Blob([arraybuffer], {type: "image/x-myrawformat-raw"}),
new Date().toJSON() + ".raw");
fetch("scripts/store_image.php", {
method: 'POST',
body: formData
}).then(function(resp)
{
return resp.json();
}).then(function(json)
{
console.log(json);
});
}