I have the following service call to download files from the server. I currently have it so that PDFs will open up in a new tab/window, and any other document types will be downloaded.
The problem I'm having right now is that the PDF is being prevented by a pop up blocker. Is there any way around this?
return formService.getForm(params)
.$promise
.then(response => {
var blob = new Blob([response.data], {
type: response.responseType
});
var fileUrl = (window.URL || window.webkitURL).createObjectURL(blob);
if (response.responseType === 'application/pdf') {
window.open(fileUrl);
} else {
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none"
a.href = fileUrl;
a.download = formName;
a.target = "_blank";
a.click();
window.URL.revokeObjectURL(fileUrl);
}
})
.catch(error => {
console.error(`Error downloading form '${formName}' `, error);
});
I found an answer to my question via another stack overflow post.
window.open popup getting blocked during click event
Basically, i call var newWindow = window.open();
before I make the service call and then newWindow.location = fileUrl
in the success callback.