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就不行了
...全文
5122 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("未识别到图片中的条形码!");
}
});
}

内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

87,988

社区成员

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

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