【问题标题】:Returning base64 string from web API to download as pdf in angular2 says error in opening the file从 Web API 返回 base64 字符串以在 angular2 中下载为 pdf 表示打开文件时出错
【发布时间】:2019-01-08 18:52:53
【问题描述】:

我尝试转换为 blob,但打开文件时显示错误。

 var a = document.createElement("a");
 document.body.appendChild(a);
 a.href = 'data:application/octet-stream;base64,' + fileData;
 a.download = 'fileName.pdf';
 a.click();

上面的代码工作正常,但是当我尝试下面链接中的代码时,解决方案起作用了。任何人都可以在我失踪的地方帮助我。因为我花了一天的时间。

Failed to load PDF document - Angular JS - BLOB

PDF Blob is not showing content, Angular 2

谢谢, 普里亚

【问题讨论】:

  • 怎么没用?有错误吗?它说什么?
  • 收到了类似这种格式的 blob(2100) 和下载的文件,但在打开文件时显示错误。下载的文件大小为1kb。上面的代码有效,但我上面提供的链接无效

标签: angular


【解决方案1】:

延长了一些时间并找到了解决方案。此解决方案可能会对某些人有所帮助。

convertbase64toArrayBuffer(base64) {
    var binary_string = window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
      bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
  }

转换应该是base64字符串到bufferarray然后到blob。

为@sanjay 添加更多步骤 你需要安装 filesave npm 包 -> "file-saver": "^1.3.8",

npm install "file-saver": "^1.3.8"

var byteArr = this.convertbase64toArrayBuffer(base64string);
var blob = new Blob([byteArr], { type: 'application/pdf' });
FileSaver.saveAs(blob, "filename" + extension);

希望对你有帮助

谢谢

【讨论】:

  • 你能发布完整的解决方案吗?我也面临同样的问题
  • 嗨,桑杰,我已将其余代码添加到上述答案中。如果解决方案对您有帮助,请点赞
猜你喜欢
  • 2017-09-05
  • 1970-01-01
  • 2016-04-14
  • 2016-10-13
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
相关资源
最近更新 更多