如何下载 Angular 中的 Int8Array 文件 (blob)
How to dowload a file (blob) which is Int8Array in Angular
我正在尝试下载 Angular 中的文件。该文件作为 varbinary 保存在 db 中。 Java REST 服务将其作为 byte[] 获取。我将它作为 Angular 中的 Int8Array。但是,当我下载它时,我相信它是 base64 编码的
const link = document.createElement( 'a' );
link.style.display = 'none';
document.body.appendChild( link );
const blob = new Blob([myFileByteArray], {type: 'text/xlsx'}); //myFile is Int8Array
const objectURL = URL.createObjectURL(blob);
link.href = objectURL;
link.href = URL.createObjectURL(blob);
link.download = this.myfile.name;
link.click();
在 MS 中是这样的SQL:0x323032312D30392D323720303 ...
这就是我下载这个 xlsx 并打开它时的样子:MjAyMS0wOS0yNyAwNzozMDsxMi4wODI7bT
我相信它是在从 sql 到浏览器的那条路径中的某处进行了 base64 编码...我将它保存在 SQL 中,就像这样 'CAST('this is my xslx' AS VARBINARY (MAX))
所以我知道它应该是这样的文字.
解决方案是将 Angular 中的类型从 Int8Array 更改为字符串,然后我可以使用 atob() 方法从 base64 解码。我只是不知道为什么它在base64中。难道是因为我用了Spring Boot ResponseEntity ...
this.myFile= this.myFileResultSet.result;
let myFileByteArray = this.myFile.myFileBytes //before Int8Array, now String
console.log(myFileByteArray);
let myFileDecoded = atob(myFileByteArray); // must be string not Int8Array to be able to
// convert it from base64
const link = document.createElement( 'a' );
link.style.display = 'none';
document.body.appendChild( link );
const blob = new Blob([myFileDecoded], {type: 'text/csv'});
const objectURL = URL.createObjectURL(blob);
link.href = objectURL;
link.href = URL.createObjectURL(blob);
link.download = this.myFile.name;
link.click();
});
我正在尝试下载 Angular 中的文件。该文件作为 varbinary 保存在 db 中。 Java REST 服务将其作为 byte[] 获取。我将它作为 Angular 中的 Int8Array。但是,当我下载它时,我相信它是 base64 编码的
const link = document.createElement( 'a' );
link.style.display = 'none';
document.body.appendChild( link );
const blob = new Blob([myFileByteArray], {type: 'text/xlsx'}); //myFile is Int8Array
const objectURL = URL.createObjectURL(blob);
link.href = objectURL;
link.href = URL.createObjectURL(blob);
link.download = this.myfile.name;
link.click();
在 MS 中是这样的SQL:0x323032312D30392D323720303 ...
这就是我下载这个 xlsx 并打开它时的样子:MjAyMS0wOS0yNyAwNzozMDsxMi4wODI7bT
我相信它是在从 sql 到浏览器的那条路径中的某处进行了 base64 编码...我将它保存在 SQL 中,就像这样 'CAST('this is my xslx' AS VARBINARY (MAX))
所以我知道它应该是这样的文字.
解决方案是将 Angular 中的类型从 Int8Array 更改为字符串,然后我可以使用 atob() 方法从 base64 解码。我只是不知道为什么它在base64中。难道是因为我用了Spring Boot ResponseEntity ...
this.myFile= this.myFileResultSet.result;
let myFileByteArray = this.myFile.myFileBytes //before Int8Array, now String
console.log(myFileByteArray);
let myFileDecoded = atob(myFileByteArray); // must be string not Int8Array to be able to
// convert it from base64
const link = document.createElement( 'a' );
link.style.display = 'none';
document.body.appendChild( link );
const blob = new Blob([myFileDecoded], {type: 'text/csv'});
const objectURL = URL.createObjectURL(blob);
link.href = objectURL;
link.href = URL.createObjectURL(blob);
link.download = this.myFile.name;
link.click();
});