Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Angular 2中下载一个文件_Javascript_Angular_Filesaver.js - Fatal编程技术网

Javascript 在Angular 2中下载一个文件

Javascript 在Angular 2中下载一个文件,javascript,angular,filesaver.js,Javascript,Angular,Filesaver.js,我想在Angular 2中下载pdf格式的文件,我正在使用FileSaver.js将文件另存为pdf格式 (response) => { var mediaType = 'application/pdf'; let pdfContent = response["_body"]; var blob = new Blob([pdfContent], {type: mediaType}); var filename = 'test.pdf'; //set

我想在Angular 2中下载pdf格式的文件,我正在使用
FileSaver.js
将文件另存为pdf格式

(response) => {
    var mediaType = 'application/pdf';
    let pdfContent = response["_body"];

    var blob = new Blob([pdfContent], {type: mediaType});
    var filename = 'test.pdf';
    //setTimeout(FileSaver.saveAs(blob, filename),10000); //Tried this but no result
    //  FileSaver.saveAs(blob(), "docitt-report-" + documentNo + ".pdf"); //tried this too
  },
但是下载的pdf文件是空的,我认为资源可能需要时间,所以我尝试使用
setTimeout
,但仍然没有帮助。虽然响应中有一些数据,我可以在控制台中看到它们是
response.\u body

告诉我哪里出了问题。

导入'rxjs/Rx';
this.\u reportService.getReport().subscribe(数据=>this.downloadFile(数据)),//console.log(数据),
error=>console.log(“下载文件时出错”),
()=>console.info(“确定”);
当请求准备就绪时,它将调用函数“downloadFile”,该函数定义如下
下载文件(数据:响应){
var blob=新blob([data],{type:'text/csv'});
var url=window.url.createObjectURL(blob);
窗口打开(url);

}
我让它工作了,下面是我的答案:

downloadDocument(docId){
  const headers = new Headers({responseType:ResponseContentType.Blob});
  headers.append('authorization','Bearer '+token);
  this.http.get(url,{headers:headers,responseType:ResponseContentType.Blob}).subscribe(
    (response) => {    
     FileSaver.saveAs(response.blob(), "Document-" + docId+ ".pdf");
    }
  );
}
导入FilSaver

import * as FileSaver from 'file-saver';

什么是
pdfContent
?它是一个加密字符串,出现在响应的“\u body”中。为什么希望“加密字符串”生成
.pdf
文件?字符串是“加密字符串”还是
base64
字符串?乍一看,数据似乎是“加密的”。您可以以
Blob
ArrayBuffer
的形式请求数据,请参见,似乎文件保护程序无法转换为pdf。