createObjectURL возвращает неопределенное - PullRequest
0 голосов
/ 19 декабря 2018

Мой вопрос был помечен как дубликат этого вопроса, который не имеет ничего общего.Я пытаюсь использовать тип ответа BLOB-объекта и создать для него URL-адрес, а не конвертировать свое изображение с помощью base64.

Я хотел повторить код, предложенный в этом сообщении в mithril.js.Вот моя версия:

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
    })
}

Мой запрос на самом деле возвращает изображение в формате JPEG, которое я вижу в отладчике консоли (запрос> ответ), но моя переменная imgSrc сохраняет значение undefined.

Вот как выглядит ответ в моей консоли отладки:

debug console

, поэтому result.response фактически является двоичным файлом (JPEG изображение), но функция URL.createObjectURL не создает ни одного большого объекта.Я новичок в javascript (запущен вчера) и не могу отладить.

1 Ответ

0 голосов
/ 20 декабря 2018

Это невозможно с mithril.js из-за ошибки.Простой обходной путь - сделать запрос вручную:

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) );
}
...