在 Ionic 4 中将 PDF 保存到设备
Save PDF to device in Ionic 4
我有这个代码,它可以是 运行 设备准备就绪后 因为它在辅助路由上。我现在正在 Android。
import { File } from "@ionic-native/file/ngx";
import { FileTransfer, FileTransferObject } from "@ionic-native/file-transfer/ngx";
constructor(private _transfer: FileTransfer,
private _platform: Platform,
private _file: File){
}
startDownload(file: XmatFile): void {
this.docsLoading = !0;
let path = void 0;
let visualPath = "";
if (this._platform.is("ios")) {
path = this._file.documentsDirectory;
visualPath = path;
}
else {
path = this._file.externalRootDirectory + "Download/";
visualPath = path.replace("file://", "");
}
this._checkPaths(path);
const fileTransfer: FileTransferObject = this._transfer.create();
fileTransfer.download(file.url, path + `tmp_${+new Date()}.pdf`, true, {
"content-type": mobSfcContentTypes.pdf
})
.finally(() => this.docsLoading = !1)
.then((downloadedFile) => {
(window as any).resolveLocalFileSystemURL(path, (dir) => {
dir.getFile(file.fileName, {create: true}, (newFile) => {
newFile.createWriter((fileWriter) => {
fileWriter.write(downloadedFile);
fileWriter.onwrite = () => {
this._snack(!0, `File scaricato in ${visualPath}`);
};
}, () => {
this._snack(!1, `Errore salvataggio in ${visualPath}`);
});
});
});
}, (error) => {
console.warn("mob-sfc-help => DOC download error", error);
this._sfcFunctionsSrv.showErrorAlert(`Non è stato possibile scaricare il file ${file.fileName}.
<br />Si prega di riprovare più tardi ed eventualmente aprire un ticket`);
});
}
我有问题。下载速度超快并保存了两个文件,但两个文件都非常小(几个字节),而目标 pdf 大约为 2MB。
我是不是做错了什么?
我是这样解决的
import {HTTP} from "@ionic-native/http/ngx";
export class MyComponent {
constructor(private _nativeHttp: HTTP) {
}
doDownloadToDevice(file: MyFileModel):void {
this._spinner.show();
this._nativeHttp.downloadFile(file.url, {}, {}, this._downloadPath)
.finally(() => this._spinner.hide())
.then((_r_) => {
console.info("SUCCESS");
}, (e) => {
console.warn("Download error", e);
});
}
希望对您有所帮助。
我有这个代码,它可以是 运行 设备准备就绪后 因为它在辅助路由上。我现在正在 Android。
import { File } from "@ionic-native/file/ngx";
import { FileTransfer, FileTransferObject } from "@ionic-native/file-transfer/ngx";
constructor(private _transfer: FileTransfer,
private _platform: Platform,
private _file: File){
}
startDownload(file: XmatFile): void {
this.docsLoading = !0;
let path = void 0;
let visualPath = "";
if (this._platform.is("ios")) {
path = this._file.documentsDirectory;
visualPath = path;
}
else {
path = this._file.externalRootDirectory + "Download/";
visualPath = path.replace("file://", "");
}
this._checkPaths(path);
const fileTransfer: FileTransferObject = this._transfer.create();
fileTransfer.download(file.url, path + `tmp_${+new Date()}.pdf`, true, {
"content-type": mobSfcContentTypes.pdf
})
.finally(() => this.docsLoading = !1)
.then((downloadedFile) => {
(window as any).resolveLocalFileSystemURL(path, (dir) => {
dir.getFile(file.fileName, {create: true}, (newFile) => {
newFile.createWriter((fileWriter) => {
fileWriter.write(downloadedFile);
fileWriter.onwrite = () => {
this._snack(!0, `File scaricato in ${visualPath}`);
};
}, () => {
this._snack(!1, `Errore salvataggio in ${visualPath}`);
});
});
});
}, (error) => {
console.warn("mob-sfc-help => DOC download error", error);
this._sfcFunctionsSrv.showErrorAlert(`Non è stato possibile scaricare il file ${file.fileName}.
<br />Si prega di riprovare più tardi ed eventualmente aprire un ticket`);
});
}
我有问题。下载速度超快并保存了两个文件,但两个文件都非常小(几个字节),而目标 pdf 大约为 2MB。
我是不是做错了什么?
我是这样解决的
import {HTTP} from "@ionic-native/http/ngx";
export class MyComponent {
constructor(private _nativeHttp: HTTP) {
}
doDownloadToDevice(file: MyFileModel):void {
this._spinner.show();
this._nativeHttp.downloadFile(file.url, {}, {}, this._downloadPath)
.finally(() => this._spinner.hide())
.then((_r_) => {
console.info("SUCCESS");
}, (e) => {
console.warn("Download error", e);
});
}
希望对您有所帮助。