Javascript:使用XMLHttpRequest发送arrayBuffer

Javascript: Sending arrayBuffer using XMLHttpRequest

本文关键字:发送 arrayBuffer XMLHttpRequest 使用 Javascript      更新时间:2024-07-01

我想使用XMLHttpRequest发送一个多部分表单。我要附加的文件是一个jpg文件。将文件附加到FormData对象可以很好地工作。

但我想在发送图像文件之前先处理它。因此,我有一个库,它也将Uint8Array作为输入和输出。因此,我将处理后的图像作为UInt8Array。

我试着用

form.append("picture", new Blob(fileAsArray, {type: "image/jpg"} ));

但是它创建了一个八位字节/流。那么,我如何通过XMLHttpRequest multipart/form发送Uint8Array,以便服务器看到与发送文件对象时相同的内容呢?

请注意,Blob构造函数将类型化数组(或其他源)的数组作为其参数。尝试

form.append("picture", new Blob([fileAsArray], {type: "image/jpg"} ));

这可能不是对这个问题的直接回应,但我创建了一个函数,将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);
    });
}