ব্লব ইউআরএলকে সাধারণ ইউআরএলে রূপান্তর করুন


96

আমার পৃষ্ঠাটি এর মতো একটি ইউআরএল উত্পন্ন করে: "blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f"আমি কীভাবে এটি একটি সাধারণ ঠিকানায় রূপান্তর করতে পারি?

আমি একজন যেমন ব্যবহার করছি <img>এর srcঅ্যাট্রিবিউট।


4
ইউআরএল ডিকোড করার পরেও এটি এখনও একটি localhostলিঙ্ক। পরিবর্তে এর সর্বজনীন লিঙ্কটি সন্ধান করুন। (আপনি কোন সিডিএন ব্যবহার করছেন?)
র‌্যাপ্টর

আমি জাভাস্ক্রিপ্ট ব্যবহার করতে ইচ্ছুক।
জ্যাকব

স্ট্যাকওভারফ্লো লিঙ্কটি ব্যবহার করুন .. এবং ডাব্লু 3 সি আপনার আসল সমস্যা হ'ল পরিবেশের থেকে এটি কীভাবে স্বাধীন করা যায় আপনি আপনার কোডটি স্থাপন করবেন
user1428716

ব্লব অ্যাড্রেস থেকে পাবলিক ইউআরএল সন্ধান করার কোনও উপায় আছে কি? এই আমার একমাত্র মান।
জ্যাকব

উত্তর:


167

একটি জাভাস্ক্রিপ্ট থেকে তৈরি করা একটি BlobURL "নরমাল" ইউআরএলে রূপান্তর করা যাবে না।

একটি blob:ইউআরএল সার্ভারে বিদ্যমান ডেটাগুলিকে উল্লেখ করে না, এটি বর্তমান পৃষ্ঠার জন্য বর্তমানে আপনার ব্রাউজারের মেমরিতে থাকা ডেটা বোঝায়। এটি অন্যান্য পৃষ্ঠাগুলিতে উপলভ্য হবে না, এটি অন্যান্য ব্রাউজারগুলিতে উপলব্ধ হবে না এবং এটি অন্যান্য কম্পিউটার থেকে পাওয়া যাবে না।

সুতরাং কোনও ইউআরএলকে Blobএকটি "সাধারণ" ইউআরএলে রূপান্তর করার জন্য, সাধারণভাবে এটি বোঝা যায় না । আপনি যদি একটি সাধারণ ইউআরএল চান, আপনাকে ব্রাউজার থেকে ডেটা কোনও সার্ভারে প্রেরণ করতে হবে এবং সার্ভারটিকে এটি একটি সাধারণ ফাইলের মতো উপলব্ধ করতে হবে।

কমপক্ষে ক্রোমে blob:কোনও data:ইউআরএলকে ইউআরএল রূপান্তর করা সম্ভব । আপনি blob:ইউআরএল থেকে ডেটা "আনার" জন্য একটি এজেএক্স অনুরোধ ব্যবহার করতে পারেন (যদিও এটি সত্যই এটি আপনার ব্রাউজারের স্মৃতি থেকে সরিয়ে ফেলছে, কোনও HTTP অনুরোধ তৈরি করে না)।

এখানে একটি উদাহরণ:

var blob = new Blob(["Hello, world!"], { type: 'text/plain' });
var blobUrl = URL.createObjectURL(blob);

var xhr = new XMLHttpRequest;
xhr.responseType = 'blob';

xhr.onload = function() {
   var recoveredBlob = xhr.response;

   var reader = new FileReader;

   reader.onload = function() {
     var blobAsDataUrl = reader.result;
     window.location = blobAsDataUrl;
   };

   reader.readAsDataURL(recoveredBlob);
};

xhr.open('GET', blobUrl);
xhr.send();

data:ইউআরএলগুলি সম্ভবত আপনি "সাধারণ" বলতে চাইছেন না এবং সমস্যাগতভাবে বড় হতে পারে। তবে তারা সাধারণ URL এর মতো কাজ করে যাতে এগুলি ভাগ করা যায়; তারা বর্তমান ব্রাউজার বা সেশনের সাথে নির্দিষ্ট নয়।


14
যদি ব্লব ইউআরএলগুলি সার্ভারের ডেটার দিকে নির্দেশ না করে, তবে ইউটিউব ভিডিওগুলির এসসিআর ইউআরএল দেখতে কেমন হবে: src = "ব্লব: https% 3A // www.youtube.com / 44f26667-03f1-4978-9eed-AF0cbf11dd67" (ইন ক্রোম)
bhh1988

4
@ bhh1988 এটি একটি খুব আকর্ষণীয় অনুসন্ধান। আমি নিশ্চিত না যে সেখানে কী চলছে। যদি আমি এই পোস্টে বর্ণিত হিসাবে XMLHttpRequest ব্যবহার করে তাদের এসসিআর ব্লব ইউআরএল পুনরুদ্ধার করার চেষ্টা করি তবে কোনও সামগ্রী ফিরে আসবে না। আমার অনুমান যে হয় (ক) তারা অন্য উত্স থেকে ডেটা খাওয়ানোর সময় স্থানধারক হিসাবে ব্যবহার করার জন্য কোনও ফাঁকা ব্লব ইউআরএল তৈরি করেছে বা (খ) ব্লবটি কোনওভাবে এনক্রিপ্ট হওয়া ডেটার জন্য প্রক্সি হিসাবে কাজ করে (HTML5 এনক্রিপ্টড মিডিয়া এক্সটেনশনের মাধ্যমে)। তবে, আমি নিশ্চিত নই যে এগুলির দুটি বাস্তবে কীভাবে করা যেতে পারে।
জেরেমি

19
@ bhh1988 দেখে মনে হচ্ছে মিডিয়া সোর্স এক্সটেনশানগুলি স্পষ্টভাবে জাভাস্ক্রিপ্ট দ্বারা পরিচালিত মিডিয়া স্ট্রিমগুলির জন্য ব্লব URL গুলি তৈরি করার অনুমতি দেয় created এগুলি এই পোস্টে আলোচিত ব্লব ইউআরএলগুলির মতো স্থিতিশীল ডেটার সাথে সামঞ্জস্য করে না, সুতরাং আচরণের পার্থক্য, তবে তারা এখনও স্থানীয় তথ্য উল্লেখ করে, সরাসরি কোনও সার্ভারের ডেটার সাথে নয়।
জেরেমি

4
হুম, ঠিক আছে। এটি বিভ্রান্তিকর কারণ ইউআরএলটি বাস্তব এবং উদ্বেগজনক দেখাচ্ছে তবে এটি যদি কেবল স্থানধারক হয় তবে এসসিআরটির মান কী তা বিবেচনা করা উচিত নয়।
bhh1988

4
আমি একটি Not allowed to navigate top frame to data URL: data:text/plain;base64,...ত্রুটি পেয়েছি । আমি ডেটা পেয়েছি, তবে window.locationএটির অনুমতি নেই ...
loretoparisi

15

ব্লব ইউআরএল থেকে ডেটা ইউআরএল তৈরি করার আর একটি উপায় ক্যানভাস ব্যবহার করা হতে পারে।

var canvas = document.createElement("canvas")
var context = canvas.getContext("2d")
context.drawImage(img, 0, 0) // i assume that img.src is your blob url
var dataurl = canvas.toDataURL("your prefer type", your prefer quality)

যেমনটি আমি এমডএন-তে দেখেছি, ক্যানভাস.টোডাটাআরএল ব্রাউজারগুলি সমর্থন করে। (অর্থাত্ <9, সর্বদা অর্থাত্ <9) ব্যতীত


17
মনে রাখবেন যে এটি অবশ্যই চিত্রের ডেটার জন্য প্রযোজ্য এবং কিছু মেটাডেটা হারিয়ে যেতে পারে!
minmaxavg

4
এটি করার ফলে একটি লিঙ্ক তৈরি হয় তবে আপনি এটি অনুসরণ করলে আপনি কেবল একটি কালো বাক্স পাবেন।
এন্টফিশ

@ আন্টফিশ, এমনটা হওয়া উচিত নয়?
পেসারিয়ার

5

যারা এখানে এসেছেন কোনও ব্লব ইউআরএল ভিডিও / অডিও ডাউনলোড করার উপায় খুঁজছেন তাদের জন্য এই উত্তরটি আমার পক্ষে কাজ করেছে। সংক্ষেপে, আপনার Chrome- > নেটওয়ার্ক ট্যাবের মাধ্যমে কাঙ্ক্ষিত ওয়েব পৃষ্ঠায় একটি * .m3u8 ফাইল সন্ধান করতে হবে এবং এটি একটি ভিএলসি প্লেয়ারে পেস্ট করতে হবে ।

অন্য গাইড আপনাকে ভিএলসি প্লেয়ারের সাহায্যে কীভাবে একটি স্ট্রিম সংরক্ষণ করবেন তা দেখায় ।


-4

পূর্ববর্তী উত্তরটি যেমন বলেছে, এটি ইউআরএলটিকে আবার ডিকোড করার কোনও উপায় নেই, আপনি যখন ক্রোম ডিভলটুল প্যানেল থেকে দেখার চেষ্টা করেন তখনও ইউআরএলটি ব্লব হিসাবে এনকোডড থাকতে পারে।

যাইহোক, ডেটা পাওয়া সম্ভব, তথ্য প্রাপ্তির অন্য উপায় হ'ল এটি একটি অ্যাঙ্কারে রেখে সরাসরি ডাউনলোড করা।

<a href="blob:http://example.com/xxxx-xxxx-xxxx-xxxx" download>download</a>

এটিতে ব্লব ইউআরএল থাকা পৃষ্ঠায় প্রবেশ করুন এবং বোতামটি ক্লিক করুন, আপনি সামগ্রীটি পাবেন।

আরেকটি উপায় হ'ল একটি প্রক্সি সার্ভারের মাধ্যমে অজ্যাক্স কলটি বন্ধ করা, তবে আপনি প্রকৃত চিত্র url দেখতে পেতেন।


<a href="blob: example.com/xxxx-xxxx-xxxx-xxxx "download="abc.txt"> ডাউনলোড </a>। এটি কাজ করা উচিত. এটি যখন হারেফের দিকে আঘাত করবে, তখন এটি ব্লবের নাম পরিবর্তন করে abc.txt এবং ডাউনলোড করবে
পি সতীশ প্যাট্রো

4
ডাউনভোটস কেন? আমি কি বলেছিলাম তা কি তুমি চেষ্টা করেছ?
ospider

আমি ডাউনওয়েট করিনি। আমি এখানে এসেছে. এবং আমি ভেবেছিলাম এটি কার্যকর হবে। আমি এটি একটি ছোট্টের সমর্থনে আছি
পি সতীশ প্যাট্রো

ডাউনভোটগুলি সম্পর্কে নিশ্চিত না, তবে এটি অবশ্যই সোজা উপায় বলে মনে হচ্ছে। (এই বলেই আমি Failed - Network errorলিনাক্সে সর্বদা Chrome 83.0.4103.97 এ আসি।)
টরারিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.