我想下载一个在php7
中创建的API服务的文件。当我从API服务收到服务输出时,该文件不会下载。但是如果我在浏览器的开发者工具中看到服务输出是正确的。我的应用程序出了什么问题?
为了获得角度的API服务,我使用angular2&的HttpClient。得到方法。订阅后,http
服务结果不为空,但不是下载文件。如何在angular2中使用流下载?
downloadAttachment(filename: string){
return this.http.get( this.url +"/"+ filename)
.catch(this.handleError);
}
答案 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"
}
);