首页 > 解决方案 > 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)" >

标签: angularspring-bootblobdocx

解决方案


推荐阅读