Mostrar el error Below en Safari.
Falló la ejecución de 'createObjectURL' en 'URL': No se encontró ninguna función que coincidiera con la firma proporcionada.
Mi código es:
function createObjectURL(object) {
return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}
Este es mi código para la imagen:
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);
}
}
}
}
ACTUALIZACIÓN
Considere la posibilidad de evitar el método createObjectURL()
, mientras que los navegadores están deshabilitando su soporte. Simplemente adjunte el objeto MediaStream
directamente a la propiedad srcObject
del elemento HTMLMediaElement
, por ejemplo, <video>
.
const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;
Sin embargo, si necesitas trabajar con MediaSource
, Blob
o File
, tienes que crear una URL con URL.createObjectURL()
y asignarla a HTMLMediaElement.src
.
Lee más detalles aquí: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
*Respuesta anterior
He experimentado el mismo error, cuando pasé a createObjectURL
datos en bruto:
window.URL.createObjectURL(data)
Tiene que ser Blob
, File
o MediaSource
objeto, no los datos en sí. Esto me ha funcionado:
var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))
Comprueba también el MDN para más información: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
Tuve el mismo error para el MediaStream. La solución es establecer un flujo al srcObject.
De los docs:
Importante: Si todavía tienes código que depende de createObjectURL() para
adjuntar flujos a los elementos multimedia, necesita actualizar su código para simplemente establecer srcObject al MediaStream directamente.
El problema es que las claves proporcionadas en el bucle no hacen referencia al índice del archivo.
for (var i in this.files) {
console.log(i);
}
La salida del código anterior es:
0
length
item
Pero lo que se esperaba era
0
1
2
etc...
Entonces el error se produce cuando el navegador intenta ejecutar, por ejemplo:
window.URL.createObjectURL(this.files["length"])
Sugiero la implementación basada en el siguiente código:
var files = this.files;
for (var i = 0; i < files.length; i++) {
var file = files[i],
src = (window.URL || window.webkitURL).createObjectURL(file);
...
}
Espero que esto pueda ayudar a alguien.
¡Saludos!