我的后端(在nodejs中)使用Web服务,该服务允许从远程服务器下载文件。它必须将下载“返回”到前端的我的reactJS Webapp。
使用招摇测试服务时,下载功能正常。因此,我的后端返回了一个包含原始数据的字符串,我将该字符串重新插入以下载。
我的前端治疗是这样的:
downloadFile(){
let path = this.props.result.link;
let name = this.props.result.fileName;
downloader.downloadAFile(path,name).then( response => {
if (response){
if (response.success == true) {
let bytes = this.data64ToArrayBuffer(response.data);
var file = new File([bytes],this.props.result.fileName+".zip",{type: "application/zip"});
fileSaver.saveAs(file);
} else {
console.log(response);
if (response.data == "Fichier introuvable."){
window.alert(response.data);
}
}
}
}).catch(function (error){
console.log(error);
});
}
dataToArrayBuffer = (data) => {
var binaryString = data;
console.log(binaryString);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) {
var ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
}
对于名为“ test.txt”的文件,该文件包含“ test”作为文本,在“ / PATH / TO / FOLDER”路径中,API应该建议下载一个压缩文件,命名为“ test.txt.zip” ,其中包含所有文件夹树/ PATH / TO / FOLDER,最后一个文件夹中是提到的文件。
我在前端进行的下载在某种程度上是有效的,因为它会下载一个带有正确名称,正确大小和正确文件夹树的zip。 但是,路径最终文件夹中的test.txt文件似乎已损坏,因为当我尝试在7zip中打开它时,出现以下错误:CRC失败:test.txt。
我怀疑这是如何处理原始数据的问题。因为我被有效地阻止了,所以我会采取任何提示和线索。