在Safari中显示以下错误。
Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
我的代码是:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
这是我的图像代码:
function myUploadOnChangeFunction() {
if (this.files.length) {
for (var i in this.files) {
if (this.files.hasOwnProperty(i)) {
var src = createObjectURL(this.files[i]);
var image = new Image();
image.src = src;
imagSRC = src;
$('#img').attr('src', src);
} }
} }
答案 0 :(得分:95)
当我传递给createObjectURL
原始数据时,我遇到了同样的错误:
window.URL.createObjectURL(data)
必须是Blob
,File
或MediaSource
对象,而不是数据本身。这对我有用:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
另请查看MDN以获取更多信息:https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
答案 1 :(得分:82)
此错误是由于Google Chrome浏览器不推荐使用功能createObjectURL
我更改了此内容
video.src=vendorUrl.createObjectURL(stream);
video.play();
对此:
video.srcObject=stream;
video.play();
这对我有用。
答案 2 :(得分:8)
我的代码已损坏,因为我使用的是已弃用的东西。曾经是这样的:
video.src = window.URL.createObjectURL(localMediaStream);
video.play();
然后我用这个替换它:
video.srcObject = localMediaStream;
video.play();
效果很好。
参考文献:
答案 3 :(得分:7)
我对MediaStream遇到相同的错误。解决方案是将流设置为srcObject。
来自docs:
重要提示:如果您仍有依赖createObjectURL()的代码来 将流附加到媒体元素,您需要将代码更新为 只需将srcObject直接设置为MediaStream。
答案 4 :(得分:3)
后退视频:
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
发件人: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
答案 5 :(得分:2)
问题是循环中提供的键不是指文件的索引。
0
1
2
etc...
上述代码的输出是:
window.URL.createObjectURL(this.files["length"])
但预期的是:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
然后在浏览器尝试执行时发生错误,例如:
{{1}}
我建议基于以下代码实现:
{{1}}
我希望这可以帮助别人。
问候!
答案 6 :(得分:1)
如果您使用的是Ajax,则可以添加选项xhrFields: { responseType: 'blob' }
:
$.ajax({
url: 'yourURL',
type: 'POST',
data: yourData,
xhrFields: { responseType: 'blob' },
success: function (data, textStatus, jqXHR) {
let src = window.URL.createObjectURL(data);
}
});
答案 7 :(得分:0)
如果您使用 angular,本教程会有所帮助:link。但是,您需要替换此行:
this.video.src = window.URL.createObjectURL(stream);
有了这个,因为 createObjectURL() 在 chrome 上被弃用了 MediaStream。
this.video.srcObject = stream;
答案 8 :(得分:-4)
我修复了从GgitHub下载最新版本的问题 GitHub url