I have a controller action which reads a .pdf
file from azure blobstorage and returns stream object to the $.ajax()
method.
Controller returns<
I couldnt find a exact answer to this question. I found a bunch of different questions.
I finally was able to piece together by using fetch
.
You need to accept type 'arraybuffer'
, then you turn into a blob with resopnse.blob()
. Then you can open the blob in a new window.
fetch('/post/url', {
method: 'POST',
headers: {
Accept: 'arraybuffer',
'Content-Type': 'application/json',
},
//you need to use json here
body: JSON.stringify({ items: [{ ItemId: 3, Quantity: 40 }], fileId: 2 });
})
.then(response => response.blob())
.then(data => {
var popup = window.open(URL.createObjectURL(data), "height=500,width=750);
});
Why don't you just use standard HTML? There's no need for Javascript here (as you created a standard <a>
tag for initial trigger of action).
Something like:
<form action="/PDFfile" method="post" target="_blank">
<input type="submit" value="Show me the file in a new tab/window!"/>
</form>
Notes:
Content-Type: application/pdf
in your Azure script, so that the browser will know it's a PDF