2017-03-25 31 views
0

我正嘗試從服務器下載音頻文件。如何在angular2中下載文件

import { Headers, Http, Response, RequestOptions, ResponseContentType } from '@angular/http'; 


downloadFile() { 
    let downloadUrl = "https://firebasestorage.googleapis.com/v0/b/enoeasy-94b34.appspot.com/o/Davido%20-%20If.mp3?alt=media&token=603f3beb-2380-42a4-a119-7bbb34769d78" 
    let headers = new Headers({ 'Content-Type': 'audio/mpeg', 'MyApp-Application' : 'AppName', 'Accept': 'audio/*' }); 
    let options = new RequestOptions({ headers: headers, responseType: ResponseContentType.Blob }); 

    return this.http.post(downloadUrl, '', options) 
     .map(this.extractContent) 
     .catch(this.handleError); 
    } 

private extractContent(res: Response) { 
     let blob: Blob = res.blob(); 
     window['saveAs'](blob, 'test.mp3'); 
} 

所以當下面的按鈕被點擊時,我應該得到test.mp3文件。 不幸的是,這是工作。

<button md-button (click)="downloadFile()"><i class="fa fa-download" aria-hidden="true" ></i> Download</button> 

我在網上搜索了任何有關使用angular2下載文件的教程,找不到任何有用的信息。

我怎麼去,下載文件與angular2?

回答

0

請使用下列方式

downloadFile() { 

    let downloadUrl = "https://firebasestorage.googleapis.com/v0/b/enoeasy-94b34.appspot.com/o/Davido%20-%20If.mp3?alt=media&token=603f3beb-2380-42a4-a119-7bbb34769d78"; 

var save = document.createElement('a'); 
      save.href = downloadUrl; 
      save.target = '_blank'; 
      save.download = downloadUrl; 
      var evt = document.createEvent('MouseEvents'); 
      evt.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, 
       false, false, false, false, 0, null); 
      save.dispatchEvent(evt); 
      (window.URL).revokeObjectURL(save.href); 

} 
+0

不幸的是,這個下載文件爲Windows程序,無法打開或播放。該文件假定是一個mp3文件。 –