【发布时间】:2017-07-27 20:34:50
【问题描述】:
我有一个 Ionic 2 应用程序,我需要从 soundcloud 下载音频。我已经有了执行请求所需的 url:
let url = `https://api.soundcloud.com/tracks/${audio.id}/download?client_id=${this.SC_CLIENT_ID}`
我想知道如何做到这一点。我尝试了 FileTransfer:
public download(audio: any): void {
this.platform.ready().then(() => {
console.log("Clickeo para descargar: " + audio.id);
let url = `https://api.soundcloud.com/tracks/${audio.id}/download?client_id=${this.SC_CLIENT_ID}`;
let pathToSaveTo: string = '';
if (this.platform.is('android')) {
pathToSaveTo = cordova.file.externalApplicationStorageDirectory + audio.id + '.wav';
let fileTransfer = new Transfer();
fileTransfer.onProgress(this.onProgress);
fileTransfer.download(url, pathToSaveTo)
.then((entry) => {
console.log('download complete: ' + entry.toURL());
}, (error) => {
let prompt = this.alertCtrl.create({
title: 'Error',
subTitle: error,
buttons: ['Accept']
});
prompt.present();
});
}
});
}
onProgress = (progressEvent: ProgressEvent) : void => {
this.ngZone.run(() => {
if (progressEvent.lengthComputable) {
let progress: any = Math.round((progressEvent.loaded / progressEvent.total) * 100);
console.log(progress);
let toast = this.toastCtrl.create({
message: progress,
duration: 100
});
toast.present();
}
});
}
但它总是下载一个零 KB 的文件。有什么解决办法吗?也许是 angular2 方式,还是我做错了? 如果我将此 url 放入浏览器中,并使用正确的音频 id 和 mi 客户端 id,它会开始下载,但不会使用 FileTransfer。
非常感谢。
伊万。
【问题讨论】:
-
谢谢@MELWINVINCENT,但这不是我的问题。我的问题是 soundcloud 返回了带有重定向的响应。我必须检测重定向状态并手动重定向到
response.headers.Location
标签: cordova angular ionic2 file-transfer angular2-http