将Excel Base 64转换为带Angular6的Excel
我有一个Springboot服务,它将base64中的Excel文件发送到Angular6。出于安全考虑,我无法直接发送文件,因此,我首先将文件转换为base64 以我的角度,我可以接受base64:将Excel Base 64转换为带Angular6的Excel,angular6,Angular6,我有一个Springboot服务,它将base64中的Excel文件发送到Angular6。出于安全考虑,我无法直接发送文件,因此,我首先将文件转换为base64 以我的角度,我可以接受base64: { "file" : "UEsDBBQACAAIAJOOOU/kSK2vGAEAADMDAAATAAAAW0NvbnRlbnRfVHlwZXNdLnht" } 字符串文件更长 但是,当我尝试打开此文件时,我在LibreOffice中发现错误,该文件已损坏 this.data.get
{
"file" : "UEsDBBQACAAIAJOOOU/kSK2vGAEAADMDAAATAAAAW0NvbnRlbnRfVHlwZXNdLnht"
}
字符串文件更长
但是,当我尝试打开此文件时,我在LibreOffice中发现错误,该文件已损坏
this.data.getFile(endPoint).subscribe(
data => {
const myfile= atob(data.file);
const blob = new Blob([myfile], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
saveAs(blob, 'myfile.xlsx');
} );
编辑:
这是myfile=>
求你了,我需要帮助
当我保存一个blob“myfile.xlsx”时,Angular不会出错;但是,如果我尝试打开文件,就会出现错误。atob输出UTF8字符串,而不是文件。您收到的base64字符串很可能是从实际文件编码的,该文件是一个字节数组。我认为这项功能对您很有用:
public base64ToBlob(b64Data, sliceSize=512) {
let byteCharacters = atob(b64Data); //data.file there
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
return new Blob(byteArrays, {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
}
atob输出UTF8字符串,而不是文件。您收到的base64字符串很可能是从实际文件编码的,该文件是一个字节数组。我认为这项功能对您很有用:
public base64ToBlob(b64Data, sliceSize=512) {
let byteCharacters = atob(b64Data); //data.file there
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
return new Blob(byteArrays, {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
}
你是我的英雄!这对我很有效你是我的英雄!它对我非常有效