need to download excel file by using fileName with response header
e.g: Content-Disposition: attachment; filename=InwardPackingList_BTD_1151.xlsx; filename*=UTF-8''InwardPackingList_BTD_1151.xlsx
i tried few methods but nothing will works
upload(files, data) {
this.fileData = <File>files;
this.packingList.uploadExcel(this.fileData).subscribe(res => {
console.log("upload Excel", res)
const arr = Object.keys(res)[0]
this.packingList.updatePackingListExcel(data.inwardPackingListId, arr).subscribe(res => {
const fileName = getFileNameFromResponseContentDisposition(res);
console.log("fileName", fileName)
saveFile(res.blob(), fileName);
});
})
}
这是我以前打电话给我的服务 updatePackingListExcel(id,file):可观察{ 返回this.http.get(baseUrl +'api / purchase / pd / price / update?pdId ='+ id +'&file ='+文件,{ 标头:新的HttpHeaders({ 'Content-Type':'application / json', “授权”:'Bearer'+ localStorage.getItem('token'), }) }) }
//Separate file
import * as FileSaver from 'file-saver';
import { saveAs } from 'file-saver';
/**
* Saves a file by opening file-save-as dialog in the browser
* using file-save library.
* @param blobContent file content as a Blob
* @param fileName name file should be saved as
*/
export const saveFile = (blobContent: Blob, fileName: string) => {
const blob = new Blob([blobContent], { type: 'application/octet-stream' });
saveAs(blob, fileName);
};
/**
* Derives file name from the http response
* by looking inside content-disposition
* @param res http Response
*/
export const getFileNameFromResponseContentDisposition = (res:Response) => {
const contentDisposition = res.headers.get('content-disposition') || '';
const matches = /filename=([^;]+)/ig.exec(contentDisposition);
const fileName = (matches[1] || 'untitled').trim();
return fileName;
};