使用 Javascript XMLHttpRequest 时,来自服务器的二进制数据缺少字节

Binary Data from server is missing bytes when using Javascript XMLHttpRequest

我已经为此工作好几天了,但无济于事 :( 非常感谢任何帮助。

我正在尝试使用以下方法将文件下载为类型化数组:

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true); //This is the path to my file 
oReq.responseType = "arraybuffer";

oReq.onload = function (oEvent) {
 var arrayBuffer = oReq.response; 
 var array = new Uint8Array(arrayBuffer ); //This is the array I retrieve from my file
};

oReq.send(null);

当我对所有资产都在我的计算机硬盘驱动器上执行此操作时,它运行完美,我会收到如下所示的响应(这只是示例数据):

array[0] = 10;
array[1] = 15;
array[2] = 20;
array[3] = 17;
array[4] = 18;
array[5] = 23;
array[6] = 25;
array[7] = 12;
array[8] = 2;
array[9] = 10;
...

然而,当我将所有内容上传到服务器时,我得到的结果如下所示:

array[0] = 10;
array[1] = 15;
array[2] = 20;
array[3] = 17;
array[4] = 18;
array[5] = 25;  //This number is missing from above, it should be 23
array[6] = 12;
array[7] = 2;
array[8] = 10;
array[9] = 18;
...

我已尽我所能解决此问题。清除缓存,打开和关闭 gzip,用不同的设备测试它(即在 phone 和计算机上加载它),但到目前为止没有任何帮助。

令我感到奇怪的是,相同的数字每次都是错误的。所以我认为他们不会通过网络获得 "lost"。此外,当我使用不同的服务器对其进行测试时,我会得到不同的数字。所以似乎每个服务器都会丢弃一组不同的数字。

有谁知道这是为什么,您能否引导我找到帮助解决问题的方向?非常感谢!

我想通了...哇,这是一次有趣的经历。

事实证明,我使用的 FTP 客户端 (FileZilla) 具有自动尝试检测文件数据类型并对其进行必要调整的设置,以便在所有 OS 中正确显示系统。

这是一个记录在案的行为,可以在此处阅读: https://wiki.filezilla-project.org/Data_Type

当我关闭此行为(在 "transfer" - "transfer-type" 选项卡下将其从自动切换为二进制)时,一切都按预期再次运行。

非常感谢 Jaromanda X 的乐于助人。他的回答让我了解了如何使用这些设置。我希望这能帮助将来遇到同样问题的其他人!