Hello,
I’m trying to download files from a server, which has a PHP that retrieves a file when the appropiate parameters are added. First, I considered to use the FileTransfer plugin, but didn’t see the way to add these parameters to download (afterwards, I read that FileTransfer admits headers, but nevertheless I haven’t tried it yet). The thing is that now I’m using the following code:
download(user: string, token: string, oaram1: string) {
this.userService.download(user, token, param1)
.subscribe(
(data) => { // Success
this.fileURL = this.downloadFile(data, 'application/zip', 'file.zip');
console.log("URL = " + this.fileURL);
},
(error) =>{
console.error(error);
}
);
}
downloadFile(data: any, type: string, filename: string): string {
const url = window.URL.createObjectURL(data);
const a = document.createElement('a');
a.setAttribute('style', 'display:none;');
document.body.appendChild(a);
a.href = url;
a.download = filename;
a.click();
return url;
}
}
userService.download:
download(user: string, token: string, param1: string) {
const body = {user: user, token: token, param1: param1};
return this.http.post(this.downloadUrl, body, {responseType: "blob"});
}
This code works in the browser, downloading the file, but I’m unable to get it working on the device, iOS particularly. I’m getting this in the console with the device:
URL = blob:http://localhost:8080/digits-and-characters
Any idea about how to download the file on the device? Or maybe it is downloaded indeed, but I don’t know how to access the app’s dataDirectory. Any help is appreciated.