如何下载角度2打字稿文件

时间:2018-05-10 18:35:03

标签: angular

我想下载一个在php7中创建的API服务的文件。当我从API服务收到服务输出时,该文件不会下载。但是如果我在浏览器的开发者工具中看到服务输出是正确的。我的应用程序出了什么问题?

为了获得角度的API服务,我使用angular2&的HttpClient。得到方法。订阅后,http服务结果不为空,但不是下载文件。如何在angular2中使用流下载?

downloadAttachment(filename: string){
   return this.http.get( this.url +"/"+ filename)
            .catch(this.handleError);
}

3 个答案:

答案 0 :(得分:2)

你可以在npm中使用FileSave包:

npm install --save file-saver
..
import { saveAs } from 'file-saver/FileSaver';

然后在你的方法中订阅后得到结果使用像bellow

saveAs(result, filename);

答案 1 :(得分:1)

如果是Blob回复,则必须执行以下操作:

 const header = {responseType: 'blob', observe: 'response'};
 this.http.get( this.url +"/"+ filename, headers)
          .map(res => ({content: res.body, fileName: res.headers.get('content-filename')}));

然后你可以使用文件保护程序将blob作为可下载文件。

答案 2 :(得分:1)



    let headers = new Headers({ name: "X-Requested-With", value: "XMLHttpRequest" });
    let url = `https://api.cloudinary.com/v1_1/${cloudinary_config.cloud_name}/image/upload`;
    let form: FormData = new FormData();
    form.append("upload_preset", cloudinary_config.upload_preset);
    form.append("context", `photo=${this.title}`);
    form.append("folder", window.location.hostname);
    form.append("tags", "myphotoalbum");
    form.append("file", file);

    this.http.post(url, form).subscribe(
      (data: any) => {
        console.log("sonuc", data);
        this.success(data.toString());
        this.imageUrl.emit(JSON.stringify(data));
      },
      error => {
        this.warn("hata oluştu");
      },
      () => { // "sonuc"
      }

    );