'ইউআরএল' এ 'ক্রিয়েওবজেক্ট URL' চালিত করতে ব্যর্থ:


132

সাফারিতে ত্রুটির নীচে প্রদর্শন করুন।

'ইউআরএল'-তে' ক্রিয়েওবজেক্ট 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); 
            }
       }           
   } 
} 

6
হাই হার্ডিক, আপনি createObjectURL(...)যখন ত্রুটি পেয়েছেন তখন আপনি আপনার ফাংশনে কী যাচ্ছেন ?
আর্থার ওয়েবার্গ


1
ইমেজটির জন্য এটি আমার কোড: ফাংশন myUploadOnChangeFunction () {if (this.files.length) (for (এই ক্ষেত্রে I ফাইল [আমি]); var চিত্র = নতুন চিত্র (); image.src = src; imagSRC = src; $ ('# img')। attr ('src', src); }}}}
হার্ডিক মান্ডানকায়া

@ হার্দিকমনসররা এগিয়ে যান এবং আপনার প্রশ্নের মধ্যে এটি সম্পাদনা করুন।
soktinpk

window.URL.createObjectURL('broken')একটি ত্রুটি নিক্ষেপ করে:Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': No function was found that matched the signature provided.
হুয়ান মেন্ডিস

উত্তর:


150

হালনাগাদ

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
হাই .. আমি যদি "অ্যাপ্লিকেশন / পিডিএফ" নিয়ে কাজ করি তবে কী করব? আমি পিডিএফ ফাইল নিয়ে কাজ করতে গিয়ে কনসোলে একই ত্রুটি পেয়ে যাচ্ছি
এন শর্মা

@ মিমো আমি ফাইল ডাউনলোড করতে একই কোড ব্যবহার করছি। তবে দুটি ফাইল ডাউনলোড হচ্ছে। একটি সঠিক নাম এবং একই নামের একটি অতিরিক্ত ফাইল তবে ব্যর্থ স্থিতিটি ডাউনলোড হচ্ছে। কেন এমন হচ্ছে তা আপনার কোনও ধারণা আছে?
শারদুল

আমি এই মন্তব্যে বিভ্রান্ত হয়েছি, এমডিএন এ এটি URL.createObjectURL()মিডিয়া স্ট্রিমের ব্যবহারকে নিরুৎসাহিত করে । তবে প্রাথমিক প্রশ্নে বর্ণিত ফাইল ইনপুটটির জন্য এটি ব্যবহার না করার কথা বলা হয় না।
alextrastero

140

এই ত্রুটিটি ঘটায় কারণ createObjectURLGoogle ক্রোমের জন্য ফাংশনটি অবচিত রয়েছে

আমি এটি পরিবর্তন করেছি:

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

এটি:

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

এটি আমার পক্ষে কাজ করেছে।



এখানে প্রদর্শিত হিসাবে ক্রিয়েটবজেক্ট URL টি অবচয় করা হয়নি তবে মিডিয়া স্ট্রিম অবজেক্টটি আর গ্রহণ করে না
গুডস 4

এই উত্তর হওয়া উচিত।
ডোমিংগোআর

আরও একটি সমস্যা আছে ভিডিও.প্লে () সীমাবদ্ধ বলে মনে হচ্ছে: ডমেক্সেক্সেপশন: প্লে () কেবলমাত্র কোনও ব্যবহারকারী ইশারা দ্বারা শুরু করা যেতে পারে।
ব্যবহারকারীর 889030

@ user889030 এর ঠিক অর্থ আপনি কোনও ওয়েবপৃষ্ঠাটি খুলতে পারবেন না এবং ওয়েবক্যাম স্ট্রিমটি শুরু হওয়ার আশা করতে পারবেন। আপনাকে ব্যবহারকারীকে স্পষ্টভাবে স্ট্রিমটি শুরু করতে হবে। স্ট্রিমটি শুরু করতে কেবল একটি বোতামটি ব্যবহার করুন
এস। রামজিৎ

26

আমার কোডটি নষ্ট হয়ে গেছে কারণ আমি একটি অবহেলা কৌশল ব্যবহার করছিলাম। এটি এটি হতে ব্যবহৃত:

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

তারপরে আমি এটি দিয়ে এটি প্রতিস্থাপন করেছি:

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

যে সুন্দরভাবে কাজ করেছে।

সম্পাদনা: সম্প্রতি হ্রাস localMediaStreamকরা হয়েছে এবং এর সাথে প্রতিস্থাপন করা হয়েছে MediaStream। সর্বশেষতম কোডটি এর মতো দেখাচ্ছে:

video.srcObject = MediaStream;

তথ্যসূত্র:

  1. অবমানিত কৌশল: https ://de વિકાસer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL
  2. আধুনিক অবহেলিত কৌশল: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/srcObject
  3. আধুনিক কৌশল: https://developer.mozilla.org/en-US/docs/Web/API/MediaStream

9

মিডিয়াস্ট্রিমের ক্ষেত্রেও আমার একই ত্রুটি ছিল। সমাধানটি srcObject এ একটি স্ট্রিম সেট করে।

ডক্স থেকে :

গুরুত্বপূর্ণ: আপনার যদি এখনও এমন কোড থাকে যা মিডিয়া উপাদানগুলির সাথে স্ট্রিমগুলি সংযুক্ত করতে ক্রিয়েটবজেক্ট URL () এর উপর নির্ভর করে, আপনাকে সরাসরি মিডিয়া স্ট্রিমে srcObject সেট করতে আপনার কোড আপডেট করতে হবে।



3

সমস্যাটি হ'ল লুপে প্রদত্ত কীগুলি ফাইলের সূচীটি উল্লেখ করে না।

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);
    ...
}

আমি আশা করি এটি কারও সাহায্য করতে পারে।

গ্রিটিংস!


1

আপনি যদি এজ্যাক্স ব্যবহার করেন তবে বিকল্পগুলি যুক্ত করা সম্ভব xhrFields: { responseType: 'blob' }:

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

-6

আমি এটি GgitHub GitHub url থেকে সর্বশেষতম সংস্করণটি ডাউনলোড করে স্থির করেছি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.