【问题标题】:Get file from server and convert it to byte array in javascript?从服务器获取文件并将其转换为 javascript 中的字节数组?
【发布时间】:2015-10-20 05:02:54
【问题描述】:

在 javascript 中,我想从服务器下载(获取)二进制文件并使用它的字节。 我使用此代码:

$.get('/file.mp4', function(data) {
    var bytes = new Uint8Array(data.length);
    for (var i=0; i<data.length; i++) {
            bytes[i] = data.charCodeAt(i);
        }
    });

但是有一个问题:data 变量的某些字符的 ASCII 码大于 255(如 "±" --> ASCII:261)!!当我使用console.log(data[i]) 时,charCodeAt(i) 也会为它们返回 65533,输出为“�”。

我测试了"ą".charCodeAt(0),输出是 261,所以我猜问题出在 get 方法接收的 data 中,而不是 charCodeAt 方法中.有没有其他下载二进制文件的方法??

【问题讨论】:

  • 你试过 Uint16Array/Uint32Array 吗?
  • 您可以在XMLHttpRequest中请求arrayBuffer
  • @MatteoRubini 是的,我已经尝试过了,但问题还没有解决。
  • @JaromandaX 非常感谢。问题已经解决了。

标签: javascript jquery binaryfiles


【解决方案1】:

像这样获取数据:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/my/image/name.png', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
  if (this.status == 200) {
    // get binary data as a response
    var blob = this.response;
  }
};

xhr.send();

【讨论】:

    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 2020-11-05
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多