দুর্ভাগ্যক্রমে @ ব্রায়ানফ্রেডের উত্তর আমার প্রয়োজনের সাথে খাপ খায় না, আমার কিছুটা আলাদা প্রয়োজন ছিল, এবং আমি জানি এটি @ ব্রায়ানফ্রেডের প্রশ্নের উত্তর নয়, তবে আমি এটি এখানে রেখে চলেছি কারণ প্রচুর লোক আমার প্রয়োজন অনুসারে এখানে এসেছিল। 'ইউআরএল থেকে ফাইল বা ব্লব কীভাবে পাওয়া যায়?' এর মতো আমার কিছু দরকার ছিল এবং বর্তমান সঠিক উত্তরটি আমার প্রয়োজনের সাথে খাপ খায় না কারণ এটি ক্রস-ডোমেন নয়।
আমার একটি ওয়েবসাইট রয়েছে যা একটি অ্যামাজন এস 3 / অ্যাজুরি স্টোরেজ থেকে চিত্র গ্রহণ করে এবং সেখানে আমি অনন্য আইডিয়াফায়ারগুলির সাথে নামযুক্ত জিনিসগুলি সঞ্চয় করি:
নমুনা: HTTP: //****.blob.core.windows.net/systemimages/bf142dc9-0185-4aee-a3f4-1e5e95a09bcf
এই চিত্রগুলির কিছু আমাদের সিস্টেম ইন্টারফেস থেকে ডাউনলোড করা উচিত। আমার এইচটিটিপি সার্ভারের মাধ্যমে এই ট্র্যাফিকটি এড়াতে এড়ানোর জন্য, যেহেতু এই বিষয়বস্তুগুলিতে অ্যাক্সেসের কোনও সুরক্ষা প্রয়োজন নেই (ডোমেন ফিল্টারিং ব্যতীত), তাই আমি ব্যবহারকারীর ব্রাউজারে সরাসরি অনুরোধ করার এবং ফাইলটিকে আসল নাম দেওয়ার জন্য স্থানীয় প্রক্রিয়াজাতকরণ ব্যবহার করার সিদ্ধান্ত নিয়েছি এবং এক্সটেনশান।
কাজ করা সম্ভব যে, আমি হেনরি Algus থেকে এই মহান নিবন্ধ ব্যবহার করেছেন:
http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
1. প্রথম পদক্ষেপ: jquery বাইনারি সমর্থন যুক্ত করুন
/**
*
* jquery.binarytransport.js
*
* @description. jQuery ajax transport for making binary data type requests.
* @version 1.0
* @author Henry Algus <henryalgus@gmail.com>
*
*/
// use this transport for "binary" data type
$.ajaxTransport("+binary", function (options, originalOptions, jqXHR) {
// check for conditions and support for blob / arraybuffer response type
if (window.FormData && ((options.dataType && (options.dataType == 'binary')) || (options.data && ((window.ArrayBuffer && options.data instanceof ArrayBuffer) || (window.Blob && options.data instanceof Blob))))) {
return {
// create new XMLHttpRequest
send: function (headers, callback) {
// setup all variables
var xhr = new XMLHttpRequest(),
url = options.url,
type = options.type,
async = options.async || true,
// blob or arraybuffer. Default is blob
dataType = options.responseType || "blob",
data = options.data || null,
username = options.username || null,
password = options.password || null;
xhr.addEventListener('load', function () {
var data = {};
data[options.dataType] = xhr.response;
// make callback and send data
callback(xhr.status, xhr.statusText, data, xhr.getAllResponseHeaders());
});
xhr.open(type, url, async, username, password);
// setup custom headers
for (var i in headers) {
xhr.setRequestHeader(i, headers[i]);
}
xhr.responseType = dataType;
xhr.send(data);
},
abort: function () {
jqXHR.abort();
}
};
}
});
২. দ্বিতীয় পদক্ষেপ: এই পরিবহণের ধরণটি ব্যবহার করে একটি অনুরোধ করুন।
function downloadArt(url)
{
$.ajax(url, {
dataType: "binary",
processData: false
}).done(function (data) {
// just my logic to name/create files
var filename = url.substr(url.lastIndexOf('/') + 1) + '.png';
var blob = new Blob([data], { type: 'image/png' });
saveAs(blob, filename);
});
}
এখন আপনি তৈরি ব্লবটি যেমন আপনি চান তা ব্যবহার করতে পারেন, আমার ক্ষেত্রে আমি এটি ডিস্কে সংরক্ষণ করতে চাই।
৩. alচ্ছিক: ফাইলসভার ব্যবহার করে ব্যবহারকারীর কম্পিউটারে ফাইল সংরক্ষণ করুন
ডাউনলোড করা ফাইলটি ডিস্কে সংরক্ষণ করতে আমি ফাইলসভার.জেএস ব্যবহার করেছি, যদি আপনার এটি সম্পাদন করতে হয় তবে দয়া করে এই জাভাস্ক্রিপ্ট লাইব্রেরিটি ব্যবহার করুন:
https://github.com/eligrey/FileSaver.js/
আমি আশা করি এটি আরও নির্দিষ্ট প্রয়োজনীয়তার সাথে অন্যদের সহায়তা করবে help
XMLHttpRequest
আপনাকে কেবল ব্লব ইউআরএল প্রেরণ করতে হবে to