我有Cordova文件插件故障。这是我为了管理我的应用程序中的文档下载而创建的服务。
问题的原因是this.file.externalRootDirectory总是返回一个空值。我不知道原因是什么。谢谢你的帮助。我把函数留在这里。
import { FileOpener } from '@ionic-native/file-opener/ngx';
import { File } from "@ionic-native/file/ngx";
constructor(
private platform: Platform,
private notificationService: NotificationService,
private fileOpener: FileOpener,
private file: File
) {
}
async downloadFile(base64String: string, extension: string, fileName: string) {
const dt = new Date().toISOString().slice(0, 19).split('-').join('').split(':').join('');
fileName = `${fileName}-${dt}.${extension}`;
const blob = this.b64toBlob(base64String, this.getMimeTypeFromExt(extension));
if (this.platform.is('android')) {
const path = `${this.file.externalRootDirectory + '/Download/'}`;
this.file.writeFile(
path,
fileName,
blob
)
.then(() => {
this.fileOpener.open(`${path}${fileName}`, this.getMimeTypeFromExt(extension)).then( () => {
}).catch((error) => {
this.notificationService.error(MSG.OPENING_DOCUMENT_ERROR);
});
}).catch((error) => {
this.notificationService.error(MSG.DOWNLOADED_DOCUMENT_ERROR);
});
} else {
const fileURL = URL.createObjectURL(blob);
if ( extension === 'pdf' ) {
const newWindow = window.open();
newWindow.location.href = fileURL;
} else {
const link = document.createElement("a");
link.href = fileURL;
link.download = fileName
link.click();
}
}
}
PS:几天前它对我来说工作得很好,但它开始工作得很糟糕。
您需要声明extra filesystems
<preference name="iosExtraFilesystems" value="library,library-nosync,documents,documents-nosync,cache,bundle,root" />
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,assets,root" />
默认情况下,上述内容应该已经设置,除非您在。
中覆盖了。你可以从这里看到更多的细节