Tengo este código, que se puede ejecutar después de que el dispositivo esté listo ya que está en una ruta secundaria. Estoy trabajando en Android en este momento.

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`);
        });

    }

Tengo un problema. La descarga es ultrarrápida y guarda dos archivos, pero ambos son muy pequeños (unos pocos bytes), mientras que el PDF de destino es de alrededor de 2 MB.

¿Estoy haciendo algo mal?

1
Sampgun 2 oct. 2019 a las 18:39

1 respuesta

La mejor respuesta

Lo resolví de esta manera

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);
        });
}

Espero que esto ayude.

2
Sampgun 10 oct. 2019 a las 13:18