我有一个用 Angular 制作的应用程序,我正在使用适用于 iOS 和 Android 的电容器来打包该应用程序。 该应用程序包含我从后端请求的附件,结果是 base64 字符串。我设法在 Web 中毫无问题地下载该文件,但在移动版本中无法下载该文件。 这是下载代码。
<div *ngFor="let attachment of attachmentsInput, let i = index">
<div class="row pl-1 pr-1">
<div class="col-lg-7">
<a role="button" (click)="downloadFile(i)" class="hover">
<span class="hover">{{attachment.name}}</span>
</a>
<a style="display: none;" id="downloadLinkId+{{i}}" [href]="attachmentsInput[i].toBeDownloaded" [download]="attachmentsInput[i].name"></a>
</div>
</div>
</div>
下载文件代码:
async downloadFile(index) {
this.attachmentsInput[index].toBeDownloaded = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,' + this.attachmentsInput[index].content);
if (this.attachmentsInput[index].toBeDownloaded)
document.getElementById('downloadLinkId+' + index).click();
}
使用 document.getElementById 是否有问题?
从链接下载不适用于本机应用程序。为此,您需要使用Filesystem API, 例如:
import { FilesystemDirectory, Plugins } from '@capacitor/core';
const { Filesystem } = Plugins;
await Filesystem.writeFile({
path: "filename.txt",
data: "base64 data",
directory: FilesystemDirectory.ExternalStorage,
});
有关在 Ionic 6 中使用 Capacitor 实现 PDF 下载的更多详细信息,您可以参考这篇博文:Ionic 6 Made Easy: Implementing PDF Downloads with Capacitor。 本指南应帮助您在 Ionic 应用程序中有效地从 Base64 数据下载 PDF。