简体   繁体   中英

Angular: Send more than two arguments in HTTP get request

I am working on an application where I want to download a file after clicking on a button on a template. There are many files that are being displayed on the screen and each file has a separate button. I am sending the index number of the array to the Angular which I want to send as params to backend. But, I also want to add a responseType of blob in my arguments and adding both these arguments is giving me an error. Here's my code:

Angular

onDownloadFiles(i: any)
{
this.fileToDownload = i;
console.log(this.fileToDownload);

const params = new HttpParams().set('id3', this.fileToDownload);
this.http.get('http://localhost:3000/downloadfile', {params}, {responseType: "blob"}) //I want to add both these
.pipe(map(responseData => {
  return responseData;
}))
.subscribe(response => {

   this.downloadFile(response, ("application/msword" || "application/vnd.openxmlformats- 
   officedocument.wordprocessingml.document"));

})
}

downloadFile(data: any, type: string)
{
let blob = new Blob([data], {type: type});
let url = window.URL.createObjectURL(blob);
let pwa = window.open(url);

if(!pwa || pwa.closed || typeof pwa.closed == "undefined")
{
  alert("Please disable your pop up blocker and try again.");
}
}

It's giving an error that the http.get method can't take more than two arguments. Is there any other way of sending this to backend?

get method accepts two arguments:

  1. url
  2. options -- which consists of the headers, params, responseType and other fields.

In your code, you are passing the params and responseType separately. If you combine both of them into single object that works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM