Gagal mengeksekusi 'createObjectURL' di 'URL':

Tampilan kesalahan di Bawah ini di Safari.

Gagal mengeksekusi 'createObjectURL' di 'URL': Tidak ada fungsi yang ditemukan yang cocok dengan signature yang disediakan.

Kode saya adalah:

function createObjectURL(object) {
    return (window.URL) ? window.URL.createObjectURL(object) : window.webkitURL.createObjectURL(object);
}

Ini adalah Kode untuk gambar:

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); 
            }
       }           
   } 
} 
Mengomentari pertanyaan (6)
Larutan

UPDATE

Pertimbangkan untuk menghindari createObjectURL() metode, sedangkan browser adalah menonaktifkan dukungan untuk itu. Hanya melampirkan MediaStream objek langsung ke srcObject milik HTMLMediaElement misalnya <video> elemen.

const mediaStream = new MediaStream();
const video = document.getElementById('video-player');
video.srcObject = mediaStream;

Namun, jika anda perlu untuk bekerja dengan MediaSource, Gumpalan atau File, anda harus membuat URL dengan URL.createObjectURL()dan menetapkan keHTMLMediaElement.src`.

Baca lebih jelasnya di sini: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject


Lebih Tua Menjawab

Saya mengalami kesalahan yang sama, ketika saya lulus untuk createObjectURL data mentah:

window.URL.createObjectURL(data)

Itu harus Gumpalan, File atau MediaSource objek, bukan data itu sendiri. Ini bekerja untuk saya:

var binaryData = [];
binaryData.push(data);
window.URL.createObjectURL(new Blob(binaryData, {type: "application/zip"}))

Periksa juga MDN untuk info lebih lanjut: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

Komentar (2)

Kesalahan ini disebabkan karena fungsi createObjectURL kadaluarsa untuk Google Chrome

Aku berubah ini:

video.src=vendorUrl.createObjectURL(stream);
video.play();

untuk ini:

video.srcObject=stream;
video.play();

Ini bekerja untuk saya.

Komentar (3)

Kode saya rusak karena saya menggunakan usang teknik. Ini digunakan untuk menjadi ini:

video.src = window.URL.createObjectURL(localMediaStream);
video.play();

Kemudian saya diganti dengan ini:

video.srcObject = localMediaStream;
video.play();

Yang bekerja dengan indah.

EDIT: baru-Baru ini localMediaStream sudah tidak digunakan lagi dan diganti dengan MediaStream. Terbaru kode terlihat seperti ini:

video.srcObject = MediaStream;

Referensi:

  1. Usang teknik: https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
  2. Modern usang teknik: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
  3. Teknik Modern: https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
Komentar (0)

Saya memiliki kesalahan yang sama untuk MediaStream. Solusinya adalah mengatur aliran ke srcObject.

Dari docs:

Penting: Jika anda masih memiliki kode yang bergantung pada createObjectURL() untuk melampirkan sungai untuk elemen media, anda perlu memperbarui kode anda untuk hanya mengatur srcObject ke MediaStream ini diatas.

Komentar (0)

Video dengan jatuh kembali:

try {
  video.srcObject = mediaSource;
} catch (error) {
  video.src = URL.createObjectURL(mediaSource);
}
video.play();

Dari: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject

Komentar (0)

Masalahnya adalah bahwa tombol yang disediakan di loop tidak merujuk ke indeks dari file tersebut.

for (var i in this.files) {
    console.log(i);
}

Output dari kode di atas adalah:

0
length
item

Tapi apa yang diharapkan adalah:

0
1
2
etc...

Kemudian terjadi kesalahan saat browser anda mencoba untuk menjalankan, misalnya:

window.URL.createObjectURL(this.files["length"])

Saya sarankan implementasi didasarkan pada kode berikut:

var files = this.files;
for (var i = 0; i < files.length; i++) {
    var file = files[i],
        src = (window.URL || window.webkitURL).createObjectURL(file);
    ...
}

Saya berharap hal ini dapat membantu seseorang.

Salam!!!

Komentar (0)

Jika anda menggunakan ajax, adalah mungkin untuk menambahkan pilihan xhrFields: { responseType: &#39;gumpalan&#39; }:

$.ajax({
  url: 'yourURL',
  type: 'POST',
  data: yourData,
  xhrFields: { responseType: 'blob' },
  success: function (data, textStatus, jqXHR) {
    let src = window.URL.createObjectURL(data);
  }
});
Komentar (0)

Aku tetap men-download versi terbaru dari GgitHub GitHub url

Komentar (0)