Не удалось выполнить 'createObjectURL' в 'URL':
Ошибка отображения ниже в Safari.
Не удалось выполнить createObjectURL для URL: не найдена функция, соответствующая предоставленной подписи.
Мой код:
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);
}
}
}
}
Ответы
Ответ 1
UPDATE
Не используйте метод createObjectURL()
, пока браузеры отключают его поддержку. Просто прикрепите объект MediaStream
непосредственно к свойству srcObject
HTMLMediaElement
, например. <video>
элемент.
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
Однако, если вам нужно работать с MediaSource
, Blob
или File
, вы должны создать URL-адрес с помощью URL.createObjectURL()
и назначить его для HTMLMediaElement.src
.
Подробнее читайте здесь: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Старый ответ
У меня возникла та же ошибка, когда я передал 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
Ответ 2
Эта ошибка вызвана тем, что функция createObjectURL
устарела для Google Chrome
Я изменил это:
video.src=vendorUrl.createObjectURL(stream);
video.play();
к этому:
video.srcObject=stream;
video.play();
Это сработало для меня.
Ответ 3
Мой код был сломан, потому что я использовал устаревшую технику. Раньше было так:
video.src = window.URL.createObjectURL(localMediaStream);
video.play();
Затем я заменил это следующим:
video.srcObject = localMediaStream;
video.play();
Это сработало прекрасно.
ОБНОВЛЕНИЕ: Недавно localMediaStream
устарела и заменена на MediaStream
. Последний код выглядит следующим образом:
video.srcObject = MediaStream;
Ссылки:
- Устаревшая техника: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
- Современная устаревшая техника: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
- Современная техника: https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
Ответ 4
У меня была такая же ошибка для MediaStream. Решением является поток srcObject.
Из документов:
Важно: если у вас все еще есть код, который использует createObjectURL() для Прикрепите потоки к медиа-элементам, вам нужно обновить код просто установите srcObject для MediaStream напрямую.
Ответ 5
Видео с отступлением:
try {
video.srcObject = mediaSource;
} catch (error) {
video.src = URL.createObjectURL(mediaSource);
}
video.play();
От:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
Ответ 6
Проблема в том, что ключи, указанные в цикле, не относятся к индексу файла.
for (var i in this.files) {
console.log(i);
}
Вывод вышеуказанного кода:
0
length
item
Но ожидалось:
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);
...
}
Я надеюсь, что это может помочь кому-то.
Привет!
Ответ 7
Если вы используете 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);
}
});
Ответ 8
Я исправил это, загрузив последнюю версию с GgitHub
GitHub url