Javascript - 文件上传,readAsArrayBuffer?

时间:2014-11-15 13:52:32

标签: javascript filereader

我正在尝试将文件上传到我的服务器。但我不确定如何使用 readAsArrayBuffer 来做到这一点。如果我使用 readAsBinaryString

,这是有效的

如果我尝试使用console.log,它只返回'arrayBuffer:{}'。 在我尝试上传之后,我可以看到内部帖子中只发送了一个空对象。如果我使用readAsBinaryString,我会看到一堆二进制代码。

var file = document.getElementById('my_file').files[0],
    reader = new FileReader();

    reader.onloadend = function(e){
        console.log(e.target.result);
        $scope.image = e.target.result;
    }

    reader.readAsArrayBuffer(file);

如何查看我的文件,所以我知道在使用readAsArrayBuffer时它正在工作? 如果需要更多代码,请告诉我!感谢。

2 个答案:

答案 0 :(得分:9)

根据ArrayBuffer文档

  

您无法直接操作ArrayBuffer的内容;相反,您创建一个类型化数组对象或一个DataView对象,它表示特定格式的缓冲区,并使用它来读取和写入缓冲区的内容。

所以我之前评论过console.log可能不知道如何表示缓冲区,因此只输出arrayBuffer: {}

如果要在控制台中显示某些内容,则需要使用类型化数组或DataView。例如,使用Int8Array

reader.onloadend = function (e) {
    console.log(e);
    console.log(new Int8Array(e.target.result));
};

请参阅demo

答案 1 :(得分:-1)

如果您想上传am图像,则必须将其转换为base64格式。您可以使用canvas元素或使用Filereader来执行此操作。如果您使用的是Filereader,则必须使用readAsDataURL()

您可以参考MDN https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL

你也可以使用canvas元素 Convert an image to canvas that is already loaded