10

I have webApi return me a blob file that I have to display. how can I know what type is the blob that I got? It could be anything, pdf, doc, jpeg etc.

$http({ method: 'GET', url: (itemsUrl), responseType: 'arraybuffer' }).then(function mySucces(res) {
    var byteArray = res.data;
    byteArray = new Uint8Array(byteArray);
    var file = new Blob([byteArray], { type: '??????' });
    var fileURL = URL.createObjectURL(file);
    window.open(fileURL);
});

or, how can I open blob in a new window without know the file type?

1 Answer 1

26

Use response.headers() to get the content type:

var config = { responseType: 'blob' };

$http.get(itemsUrl, config).then(function onSuccess(response) {
    var blob = response.data;
    var contentType = response.headers("content-type");
    var fileURL = URL.createObjectURL(blob);
    window.open(fileURL); 
});

Consider using 'blob' as the responseType.

For more information, see MDN XHR responseType.

Sign up to request clarification or add additional context in comments.

3 Comments

Just for a quick reference if anyone wants to know how to get blob response when using POST: $http.post(url, data, config). (See code.angularjs.org/1.6.10/docs/api/ng/service/$http#post )
you are not using your contentType variable, so why did you create it?
The title of the question says "get blob and extract type from response".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.