我正在尝试使用base64字符串生成用于文件下载的文件名到blob转换 . 我在下面添加了代码段以供参考:
downloadPdfFileFromBase64String(filename, base64String) {
const blob = this.base64StringtoBlob(base64String, 'application/pdf',
512);
const blobUrl = window.URL.createObjectURL(blob);
const element = document.createElement('a');
element.setAttribute('href', blobUrl);
element.setAttribute('download', filename + '.pdf');
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
window.URL.revokeObjectURL(blobUrl);
}
base64StringtoBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset +=
sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}
在所有其他浏览器中,下载的文件名保留常量名称,而在MI浏览器中,每次用户下载PDF文件时生成的文件名都不同 .
示例:在普通浏览器中,如果我将文件名作为“test”传递,则文件将作为“test.pdf”下载,并将blobUrl附加到其href . 而在MI浏览器中,文件下载为“c64297e9-d3a2-40ed-b2bd-e6347d9b704c.pdf”,它始终是随机的 .