javascript - createObjectURL 返回未定义
问题描述
我的问题已被标记为与此无关的重复。我正在尝试使用 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
值。
这是我的调试控制台中的响应:
所以 result.response 实际上是一个二进制文件(jpeg 图像),但该URL.createObjectURL
函数没有创建任何 blob。我是 javascript 新手(昨天开始),无法调试。
解决方案
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) );
}
推荐阅读
- pandas - 在列表类型数据框中出现字符
- angular - Angular 7 - 安装本地库(未发布) - 项目设置
- node.js - Express Gateway 禁用 TLSv1.0
- django - How can I apply filter to Django modelform and return form to view in Django?
- javascript - 比较两个不同数组的值
- javascript - 如何获取用户在手机上使用的浏览器版本?
- python - 拆分包含字符串的列表列表
- elasticsearch - 从 Jira 获取数据到 Elasticsearch
- java - C# 等效于 Javas Guavas Maps.uniqueIndex
- angular - AngularFire - 如何在集合查询中显示 Firestore 键和值