我一直在努力工作几天但没有用:(任何帮助都会非常感激。
我正在尝试使用以下方法将文件下载为类型化数组:
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,使用不同的设备进行测试(即将其加载到手机和计算机上),但到目前为止没有任何帮助。
令我感到奇怪的是,每次相同的数字都是错误的。所以我不认为他们会在网络上“迷失”。此外,当我用不同的服务器测试它时,我会得到不同的数字。因此,似乎每个服务器都会丢弃一组不同的数字。
有谁知道为什么会这样,你是否可以引导我朝着帮助解决问题的方向前进?非常感谢你!
答案 0 :(得分:1)
我明白了......哇这是一次有趣的经历。
事实证明我正在使用的FTP客户端(FileZilla)有一个设置,可以自动尝试检测文件数据类型并对其进行必要的调整,以便在所有OS系统中正确显示。
这是一个记录在案的行为,可以在这里阅读: https://wiki.filezilla-project.org/Data_Type
当我关闭此行为时(在#34;转移" - "转移类型"标签)下将其从自动切换为二进制,一切都按预期再次运行。
我非常感谢Jaromanda X愿意提供帮助。他的回答给了我解决这些设置所需要的洞察力。我希望这将有助于将来遇到同样问题的其他人!