angular - Angular & Spring Boot:从 Spring Boot 服务器下载 docx 文件
问题描述
我正在尝试下载来自数据库和后端的 docx 文件。
我尝试使用函数将它们转换回 blob。我可以下载该文件,但是当我尝试在 Word 中打开它时它说它已损坏。
我的代码
Download(id){
this.uploadService.getFile(id).subscribe((res) => {
this.retrieveResonse = res;
this.base64Data = this.retrieveResonse.fileContent;
var blob = new Blob([this._base64ToArrayBuffer(this.base64Data)], {
type:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
const url = URL.createObjectURL(blob);
var fileLink = document.createElement("a");
fileLink.href = url;
fileLink.download = this.retrieveResonse.name;
fileLink.click();
// console.log(this.retrieveResonse.name);
}
}
}
_base64ToArrayBuffer 函数:
_base64ToArrayBuffer(base64) {
const binary_string = window.atob(this.base64Data);
const len = binary_string.length;
const bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return bytes.buffer;
}
我在 Html 上调用了这个函数,如下所示:
<button class="btn" style="background-color: #09c0a3;" (click)="Download(file.id)" >
解决方案
推荐阅读
- amazon-web-services - AWS Cognito:如果用户已经登录,则触发 MFA
- c# - 使用表达式通过字符串路径更新嵌套属性值
- reactjs - 使用带有 Typescript 的样式组件,prop 不存在?
- c# - 复选框检查事件不会被触发
- android - 从 Kotlin 中的类更新 UI 的正确方法
- selenium - Nightwatch selenium geckodriver - 浏览器无法打开
- excel - VBA合并重复行并对具有多个条件的列求和
- python - 获取分类变量的类别列表(Python Pandas)
- android - [[15.0.4], [16.0.2]] 的库正在请求库 com.google.android.gms:play-services-measurement-base,但解析为 16.0.2
- javascript - ng-for 中的 ng-template 仅创建 1 次