URL.createObjectURL()报错

yaotomo 2018-08-09 10:18:24
需求是使用uplodify图片上传后,在uploadSuccess回调中识别图片中的条形码

代码

function uploadSuccess(file, serverdata, response) {

var barcode = getBarcode(file);

}
function getBarcode(file) {
var App = {
init: function () {
App.decode(window.URL.createObjectURL(file));
},
state: {
inputStream: {
size: 800,
singleChannel: false
},
locator: {
patchSize: "medium",
halfSample: true
},
decoder: {
readers: [{
format: "code_128_reader",
config: {}
}]
},
locate: true,
src: null
},
decode: function (src) {
var self = this, config = $.extend({}, self.state, { src: src });
Quagga.decodeSingle(config, function (result) {
if (result.codeResult) {
return result.codeResult.code;
}
});
}
}
App.init();
}

运行报错
Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.

请问是怎么回事啊,我自己做的一个小demo,用文件上传是没问题的,但是用uplodify就不行了
...全文
4145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotomo 2018-08-10
  • 打赏
  • 举报
回复
引用 5 楼 lqlqlq007 的回复:
new blob对象的时候第一个参数不对,创建出来的文件大小是你的file路径长度,而不是路径对应文件的大小,一个路径字符串当然不能创建出一个可以正常解析的blob对象。


谢谢,好像明白一点了
下面是uploadify返回的file对象,我不知道如何通过它来创建一个blob对象啊?

讨厌走开啦 2018-08-10
  • 打赏
  • 举报
回复
new blob对象的时候第一个参数不对,创建出来的文件大小是你的file路径长度,而不是路径对应文件的大小,一个路径字符串当然不能创建出一个可以正常解析的blob对象。
yaotomo 2018-08-10
  • 打赏
  • 举报
回复
引用 3 楼 lqlqlq007 的回复:
看下你传递进去的file的数据类型,createObjectURL要求参数必须是用File对象或者Blob对象。​


我改成以下代码,虽然不报错,但是blob变量的内容不对

function getBarcode(file) {
if (file) {
var blob = new Blob([file], { type: 'image/jpeg' });
console.log(blob);
decode(URL.createObjectURL(blob));
}else{
console.log("文件对象为空!");
}
}


而使用普通文件上传的时候,格式应该是

查了以下网上,说file继承了blob,不知道怎么能转成正常的file格式?
讨厌走开啦 2018-08-10
  • 打赏
  • 举报
回复
看下你传递进去的file的数据类型,createObjectURL要求参数必须是用File对象或者Blob对象。​
yaotomo 2018-08-10
  • 打赏
  • 举报
回复
是uplodify成功后返回的file对象不是blob导致的吗?我刚才随便传了一个字符串格式的参数,也报同样的错误。
不知道怎么把uploadify返回的文件转换为createObjectURL()能识别的参数类型???
yaotomo 2018-08-10
  • 打赏
  • 举报
回复
补充:不用uploadify,用普通的文件是识别正常的,下面是代码

$(function() {
$("#btnIdents").click(function() {
var input = document.querySelector(".controls input[type=file]");
if (input.files && input.files.length) {
decode(URL.createObjectURL(input.files[0]));
}
});
});

function decode(src){
var config = {
inputStream: {
size: 800,
singleChannel: false
},
locator: {
patchSize: "medium",
halfSample: true
},
decoder: {
readers: [{
format: "code_128_reader",
config: {}
}]
},
locate: true,
src: src
}

Quagga.decodeSingle(config, function(result) {
if(!result){
alert("图片中没有条形码!");
return false;
}
//识别结果
if(result.codeResult){
console.log("图片中的条形码为:"+result.codeResult.code);
alert("图片中的条形码为:" + result.codeResult.code);
}else{
alert("未识别到图片中的条形码!");
}
});
}

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧