0

My question has been marked as duplicate of this one which has nothing to do. I am trying to use a blob response type and create an URL for it, not to convert my image using base64.

I wanted to replicate the code proposed in this post in mithril.js, here is my version:

var getimage = function() {
    m.request({
        method: "POST",
        url: "http://localhost:8000/",
        data: gui,
        responseType: "blob",
        extract: function(xhr) {return xhr},
    })
    .then( function(result) {
        console.log(result) // displays request
        imgSrc = URL.createObjectURL( result.response ); // after this...
        // imgSrc is still set to undefined
    })
}

My request actually returns a jpeg image, that I can see in the console debugger (request > response), but my variable imgSrc keeps the undefined value.

Here is what the response looks like in my debug console:

debug console

so the result.response actually is a binary file (jpeg image), but no blob is being created by the URL.createObjectURL function. I am new to javascript (started yesterday) and am unable to debug.

Hugo Trentesaux
  • 1,584
  • 1
  • 16
  • 30

1 Answers1

0

This is not possible yet with mithril.js due to a bug. An easy workaround is to do the request by hand:

var getimage = function() {
    var oReq = new XMLHttpRequest();
    oReq.open("POST", 'http://localhost:8000/', true );
    oReq.responseType = "blob";
    oReq.onload = function ( oEvent )
    {
        URL.revokeObjectURL( imgSrc ); // revoke previous image source
        var blob = oReq.response;
        imgSrc = URL.createObjectURL( blob );
    };
    oReq.send( JSON.stringify(gui) );
}
Hugo Trentesaux
  • 1,584
  • 1
  • 16
  • 30