ডেটা ব্যবহার করার সময় কোনও প্রস্তাবিত ফাইলের নাম নির্দিষ্ট করার কোনও উপায় আছে: ইউআরআই?


225

উদাহরণস্বরূপ আপনি লিঙ্কটি অনুসরণ করেন:

data:application/octet-stream;base64,SGVsbG8=

ব্রাউজারটি হাইপারলিংক নিজেই বেস 64 হিসাবে থাকা ডেটা সমন্বিত একটি ফাইল ডাউনলোড করতে আপনাকে অনুরোধ করবে। মার্কআপে কোনও ডিফল্ট নাম প্রস্তাব করার কোনও উপায় আছে কি? যদি তা না হয় তবে কি জাভাস্ক্রিপ্ট সমাধান রয়েছে?


হয়তো এই সমস্যাটি সম্পর্কহীন কিন্তু আমি ফোঁটা এর & URL.createObjectURL ব্যবহার করা হয় তবে এই একটি সার্ভার বা পুরানো ব্রাউজার বাধা নয় সুপারিশ
ছাত্রলীগ

3
কিছু ব্রাউজার মিডিয়াটাইপের বিকল্প প্যারামিটার "নাম" সমর্থন করে:data:application/pdf;name=document.pdf;base64,BASE64_DATA_ENCODED
মেমস

আমার ফায়ারফক্স পিডিএফ.জেএস নিয়ে সমস্যা ছিল যা কিছু ক্ষেত্রে হ্যাং হয়ে যায় যদি এটি ডেটা ইউরি থেকে কোনও ফাইল নাম বের করতে না পারে। স্ট্যাকওভারফ্লো.com
বার্নহার্ড

@ মেমস কোন ব্রাউজারগুলি "নাম" পরামিতি সমর্থন করে? আপনি কি আমাকে কিছু রেফারেন্স ডকুমেন্টেশনে নির্দেশ করতে পারেন? (আমার গুগল-ফু আমাকে ব্যর্থ করেছে)।
TheAddonDepot

@ ডিমু ডিজাইনস সে সময় কমপক্ষে ফায়ারফক্স করুন। দেখে মনে হচ্ছে এটি আর কেস নয়। এটি মাইম কনটেন্ট-টাইপ (! = সামগ্রী-বিভাজন) "নাম" প্যারামিটারের সাথে সম্পর্কিত (আরএফসি-তে নেই?)
মেমস

উত্তর:


158

downloadবৈশিষ্ট্যটি ব্যবহার করুন :

<a download='FileName' href='your_url'>

Html5-demos.appspot.com / ... এ লাইভ উদাহরণ ।

বর্তমানে ক্রোম, ফায়ারফক্স, এজ, অপেরা এবং ডেস্কটপ সাফারি তে কাজ করে তবে আইওএস সাফারি বা আইই ১১ নয়।


3
@ বায়োডিজাইন: এটি ডেটা দিয়েও কাজ করে: ক্রোমে ইউআরআই। দেখুন: jsfiddle.net/pYpqW
সেনসফুল

6
কিন্তু আপনি এটি দিয়ে করতে পারবেন না window.location.replace। যদি আপনি উদাহরণস্বরূপ কোনও ডেটা তৈরি করতে চান: ইউরি বা একটি উত্পন্ন window.URL.createObjectURL, এবং ফাইল হিসাবে এটি ডাউনলোড করতে, আপনাকে একটি <a> </a> তৈরি করতে হবে এবং এটিতে ক্লিক করতে হবে: jsfiddle.net/flyingsheep/wpQtH (না, $(...).click()কাজ করে না)
উড়ন্ত ভেড়া

1
সমস্ত ব্রাউজারটি যদি ক্রোমের মতো হয় তবে ... [দীর্ঘশ্বাস]
রাস্তার আলো

6
@ ফ্লাইংশিপ $('<a href="data:text/plain,Test" download="test.txt">')[0].click()এখানে দুর্দান্ত কাজ করছে বলে মনে হচ্ছে (ক্রোম 23) (দ্রষ্টব্য: আমি নেটিভ clickপদ্ধতিটি ব্যবহার করেছি, জিকুয়েরির মতো নয়)। ডেমো: jsfiddle.net/2zsRW
রব ডব্লিউ

1
@ ফ্লাইংশিপ দেখে মনে হচ্ছে তারা ফায়ারফক্সে একই-উত্স নীতি প্রয়োগ করছে "ফায়ারফক্স ২০-এ এই বৈশিষ্ট্যটি কেবল একই-উত্সযুক্ত সংস্থার সংযোগের জন্য সম্মানিত হয়েছে।" বিকাশকারী.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / এইচটিএমএল / উপাদান / একটি আমার পরীক্ষায় ক্রোমের এই সীমাবদ্ধতা থাকে না।
উইলিয়াম ডেনিস

62

ক্রোম আজকাল এটিকে খুব সাধারণ করে তোলে:

function saveContent(fileContents, fileName)
{
    var link = document.createElement('a');
    link.download = fileName;
    link.href = 'data:,' + fileContents;
    link.click();
}

এই অন্যান্য সমস্ত উত্তর কী বিষয়ে কথা বলছে সে সম্পর্কে প্রথমে ক্রোম 30 এ চেষ্টা করার চেষ্টা করা হয়েছে
মাইকেল জে। ক্যালকিনস

2
এটি এখন করে তবে এটি সবসময় এত সহজ ছিল না। এই উত্তরগুলির অনেকগুলি বহু বছর আগের। এবং এগুলি অন্যান্য ব্রাউজারগুলির জন্যও কাজ করে।
হল্ফ

7
পড়ুন http://caniuse.com/#feat=download ব্রাউজার উপযুক্ততার একটি সম্পূর্ণ তালিকার জন্য।
tixastronauta

2
@ টেক্সাস্ত্রনোটা: এই পৃষ্ঠায় তথ্য থাকা সত্ত্বেও, আমার ফায়ারফক্সে কাজ করছে না 44 Chrome ক্রোমে সুন্দরভাবে কাজ করা। 48
লুইস এ ফ্লোরিট

হাই @ হোল্ফের কি ফাইলের ধরন বা সম্প্রসারণ যুক্ত করার উপায় আছে বা ফাইলের নাম হিসাবে এটি স্প্যাসফিকির মতোই সহজ?
ফ্রেসিয়ার

51

এইচটিএমএল:download বৈশিষ্ট্যটি ব্যবহার করুন :

<a download="logo.gif" href="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7">Download transparent png</a>


কেবল জাভাস্ক্রিপ্ট: আপনি এই কোড দিয়ে কোনও ডেটা ইউআরআই সংরক্ষণ করতে পারেন:

function saveAs(uri, filename) {
  var link = document.createElement('a');
  if (typeof link.download === 'string') {
    link.href = uri;
    link.download = filename;

    //Firefox requires the link to be in the body
    document.body.appendChild(link);
    
    //simulate click
    link.click();

    //remove the link when done
    document.body.removeChild(link);
  } else {
    window.open(uri);
  }
}

var file = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
saveAs(file, 'logo.gif');

ক্রোম, ফায়ারফক্স এবং এজ 13+ নির্দিষ্ট ফাইলের নাম ব্যবহার করবে।

আইই ১১, এজ 12, এবং সাফারি 9 (যা অ্যাট্রিবিউটকে সমর্থন করে নাdownload ) তাদের ডিফল্ট নাম দিয়ে ফাইলটি ডাউনলোড করবে বা এটি কোনও নতুন ট্যাবে কেবল এটি সমর্থিত ফাইলের আকারের সাথে প্রদর্শন করবে: চিত্র, ভিডিও, অডিও ফাইল ,…


উভয়
ডেমোই

আরও সম্পূর্ণ সমাধানের জন্য, আমি downloadjs
npm

এটি আমার পক্ষে কাজ করে তবে ব্রাউজার পৃষ্ঠাটি তার পরে সতেজ হয়। ভাবছি কীভাবে তা রোধ করা যায়?

1
ফাইল আকারের জন্য ক্রোমে কাজ করে না> ক্রোম স্ট্যাকওভারফ্লো.com
প্রানভ সিং

সীমাটি data:ইউআরআই-এর অন্তর্ভুক্ত, যা প্রশ্নটি উল্লেখ করেছে। এই উত্তরটি
ব্লবগুলির

40

আরএফসি 2397 অনুসারে , না, নেই।

তাছাড়াও কোন হিসেবে দেখা দিতে পারে অ্যাট্রিবিউট এর <a>উপাদান যে আপনি হয় ব্যবহার করতে পারেন।

তবে এইচটিএমএল 5 পরবর্তীকালে উপাদানটিতে downloadবৈশিষ্ট্যটি প্রবর্তন করেছে <a>, যদিও লেখার সময় সমর্থনটি সর্বজনীন নয় (উদাহরণস্বরূপ কোনও এমএসআইই সমর্থন নেই)


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

দেখতে এই মন্তব্যটি আরও তথ্যের জন্য :)
ভেড়া উড়ন্ত

@flyingsheep, এটি করা হয় ব্যাপকভাবে বাস্তবায়িত।
পেসেরিয়র

1
3 বছর আগে যখন আমি সেই মন্তব্যটি লিখেছিলাম না
উড়ন্ত ভেড়া

যদি ফাইলটি এত দীর্ঘ হয় তবে ডাউনলোড ব্যর্থ হয়
deFreitas

21

আমি নেটওয়ার্ক / প্রোটোকল / ডেটা / এনএসডিটাহ্যান্ডলার সিপ্পিতে ফায়ারফক্স উত্সগুলিতে কিছুটা দেখেছি

ডেটা হ্যান্ডলার কেবল সামগ্রী / প্রকার এবং চরসেটকে বিশ্লেষণ করে এবং স্ট্রিংয়ে "; বেস 64" আছে কিনা তা দেখে

আরএফসি কোনও ফাইলের নাম নির্দিষ্ট করে না এবং কমপক্ষে ফায়ারফক্স এর জন্য কোনও ফাইলের নাম হ্যান্ডেল করে না, কোডটি একটি এলোমেলো নাম প্লাস "। পার্ট" উত্পন্ন করে

আমি ফায়ারফক্স লগও পরীক্ষা করেছি

[b2e140]: DOCSHELL 6e5ae00 InternalLoad data:application/octet-stream;base64,SGVsbG8=
[b2e140]: Found extension '' (filename is '', handling attachment: 0)
[b2e140]: HelperAppService::DoContent: mime 'application/octet-stream', extension ''
[b2e140]: Getting mimeinfo from type 'application/octet-stream' ext ''
[b2e140]: Extension lookup on '' found: 0x0
[b2e140]: Ext. lookup for '' found 0x0
[b2e140]: OS gave back 0x43609a0 - found: 0
[b2e140]: Searched extras (by type), rv 0x80004005
[b2e140]: MIME Info Summary: Type 'application/octet-stream', Primary Ext ''
[b2e140]: Type/Ext lookup found 0x43609a0

মজিলা উত্সগুলি দেখতে চাইলে আকর্ষণীয় ফাইলগুলি:

data uri handler: netwerk/protocol/data/nsDataHandler.cpp
where mozilla decides the filename: uriloader/exthandler/nsExternalHelperAppService.cpp
InternalLoad string in the log: docshell/base/nsDocShell.cpp

আমি মনে করি আপনি আপাতত কোনও সমাধান অনুসন্ধান বন্ধ করতে পারেন, কারণ আমার সন্দেহ হয় যে এর কোনওটিই নেই :)

যেমন এই থ্রেড HTML5 হয়েছে পরিলক্ষিত downloadঅ্যাট্রিবিউট, এটা ফায়ারফক্স 20 এছাড়াও কাজ করে http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#attr-hyperlink-download


3
শান্ত! যদিও আমি অগত্যা একমত নই যে ফায়ারফক্স যা বিদ্যমান তা চূড়ান্ত কর্তৃপক্ষ authority :)
গ্লেনো

14

নিম্নলিখিত জাভাস্ক্রিপ্ট স্নিপেট লিংকের নতুন 'ডাউনলোড' বৈশিষ্ট্যটি ব্যবহার করে এবং ক্লিকের অনুকরণের মাধ্যমে ক্রোমে কাজ করে।

function downloadWithName(uri, name) {
  var link = document.createElement("a");
  link.download = name;
  link.href = uri;
  link.click();
}

এবং নিম্নলিখিত উদাহরণটি এর ব্যবহার দেখায়:

downloadWithName("data:,Hello%2C%20World!", "helloWorld.txt")

1
এটি ফায়ারফক্সে কাজ করে না, আমি Fx সামঞ্জস্যের সাথে নীচে একটি বর্ধিত উত্তর যুক্ত করেছি।
ফ্রেগান্ট

12

না।

পুরো উদ্দেশ্যটি হ'ল এটি কোনও ডেটাস্ট্রিম, কোনও ফাইল নয়। ডেটা উত্সটিতে কোনও ব্যবহারকারী এজেন্ট ফাইল হিসাবে এটি পরিচালনা করার কোনও জ্ঞান থাকা উচিত নয় ... এবং এটি নেই।


6
এর উদ্দেশ্য data:হ'ল প্রোটোকল-ভিত্তিক উত্স থেকে না পড়ে অভ্যন্তরীণ ডেটাগুলি ইউআরএল ফর্ম্যাটে ফোকাস করা । @ সাইলেক্সের উত্তরের লিঙ্কটি দেখায় যে এটি পছন্দ করার জন্য একটি পছন্দের নামটি লেখার ক্ষমতাটি কার্যকর হিসাবে বিবেচিত হয়, যদিও এটি এখনও প্রয়োগ করা হয়নি।
আলনিটাক

1
@ অলনিটক: দরকারী? একেবারে। প্রযুক্তিগতভাবে উপযুক্ত? তবুও রাজি হইনি। :)
অরবিট

3
@ টমালাক ডেটা লোড করা এবং এটি সংরক্ষণের মধ্যে পার্থক্য বিবেচনা করে - একটি ব্লব কোনও ডাটাতে ইনলকৃত থাকে তাই: ইউআরএল এর অর্থ এই নয় যে এটিতে সংরক্ষণের জন্য পছন্দসই নামটি রাখা উচিত নয়।
Alnitak

4
তবে এটির "সম্পূর্ণ উদ্দেশ্য" সম্পর্কে আপনার লাইনটি ভুল। data:নির্দিষ্টভাবে (ছোট) ইনলাইন সামগ্রীটি ফ্যজড-মিলে ইউআরএল ফর্ম্যাটে উপস্থিত হওয়ার অনুমতি দেওয়ার জন্য আবিষ্কার করা হয়েছিল যাতে এটি পৃথক এইচটিটিপি অনুরোধ ছাড়াই চিত্র ট্যাগগুলির মতো জিনিস দ্বারা ব্যবহার করা যেতে পারে। এইচটিএমএল বলেছে যে কোনও img srcবৈশিষ্ট্যের বিষয়বস্তু অবশ্যই একটি ইউআরএল হওয়া উচিত, তাই আরএফসি 2397 তৈরি করেছে। কোনও "ডেটা উত্স" নেই।
আলনিটাক

6
@ অ্যালনিটাক: একদম ঠিক। কোনও ডেটা উত্স নেই। কোনও প্রসঙ্গ নেই। ইউআরআই হ'ল ডেটা।
অরবিট

9

আপনি অ্যাঙ্কর উপাদানটিতে একটি ডাউনলোড বৈশিষ্ট্য যুক্ত করতে পারেন।

নমুনা:

<a download="abcd.cer"
    href="data:application/stream;base64,MIIDhTC......">down</a>

5

এই লিঙ্কটি দেখুন: http://lists.w3.org/ আর্কাইভস / প্রজাতন্ত্র / অরি / ২০০০ ফেবি / ২০০69০ এইচটিএমএল

উদ্ধৃতি:

এটি এমনকি (যেমন হিসাবে কোনও সমস্যা সৃষ্টি করে না) কাজ করে; বেস 64 এর শেষে
(কমপক্ষে অপেরাতে):

ডেটা: পাঠ্য / সাধারণ; charset = utf- 8; হেডার = সামগ্রী-স্বভাব% 3A% 20attachment% 3B% 20filename% 3D% 22with% 20spaces.txt% 22% 0 দিন% 0AContent ভাষার% 3A% 20en; base64,4oiaDQo% 3D

এছাড়াও আলোচনার বাকী বার্তাগুলিতে কিছু তথ্য রয়েছে।


দুর্ভাগ্যক্রমে এটি ডাউনলোড হয় না।
জেমস খুরি

7
এই আলোচনাটি ডেটা ইউআরআই ফর্ম্যাটে প্রস্তাবিত বর্ধনের জন্য ছিল - এটি কার্যকর করা হয়নি।
Alnitak

প্রয়োগ করা বা না করা, স্বেচ্ছাসেবী পরামিতিগুলির জন্য বিদ্যমান সমর্থন সহ এটি দুর্দান্ত great
ড্যান লাগ

5

পরিষেবা কর্মীদের ব্যবহার করে , অবশেষে সত্যিকার অর্থে এটি সম্ভব।

  1. একটি নকল URL তৈরি করুন। উদাহরণস্বরূপ /saveAs/myPrettyName.jpg
  2. ইউআরএল <a href, <img src, উইন্ডো.ওপেন (ইউআরএল) ব্যবহার করুন, একেবারে যে কোনও কিছু "আসল" ইউআরএল দিয়ে করা যায়।
  3. কর্মীর ভিতরে, আনার ইভেন্টটি ধরুন এবং সঠিক ডেটা দিয়ে প্রতিক্রিয়া জানান।

ব্রাউজারটি এখন myPrettyName.jpg এর পরামর্শ দিবে এমনকি যদি ব্যবহারকারী কোনও নতুন ট্যাবে ফাইলটি খোলে এবং সেখানে সেভ করার চেষ্টা করে। সার্ভার থেকে ফাইলটি এসেছিল ঠিক এমনটি হবে।

// In the service worker
self.addEventListener( 'fetch', function(e)
{
    if( e.request.url.startsWith( '/blobUri/' ) )
    {
        // Logic to select correct dataUri, and return it as a Response
        e.respondWith( dataURLAsRequest );
    }
});

1
মজাদার! সমর্থন আপাতত বেশ অগভীর বলে মনে হচ্ছে, যদিও: caniuse.com/#feat=serviceworkers
tuomassalo

কোনও ফাইলের অন্য সরাসরি ইউআরএল দিয়ে "প্রতিক্রিয়া" দেওয়ার কোনও উপায় আছে কি?
Iulian Onofrei

4

গুগল কোডে একটি ক্ষুদ্র কাজের স্ক্রিপ্ট রয়েছে যা আমার পক্ষে কাজ করেছিল:

http://code.google.com/p/download-data-uri/

এটি এতে থাকা ডেটা সহ একটি ফর্ম যুক্ত করে, জমা দেয় এবং তারপরে আবার ফর্মটি সরিয়ে দেয়। হ্যাকি, তবে এটি আমার জন্য কাজ করেছে। JQuery প্রয়োজন।

গুগল কোড পৃষ্ঠার আগে এই থ্রেডটি গুগলে প্রদর্শিত হয়েছিল এবং আমি ভেবেছিলাম যে এখানে লিঙ্কটি রাখাও সহায়ক হতে পারে।


আকর্ষণীয় স্ক্রিপ্ট তবে এটির জন্য সার্ভারের জবাব পাওয়া দরকার যে উত্তরগুলি এখুনি তা ফেরত পাঠায়? jsfiddle.net/hZySf
জেমস খুরি

আমি নিশ্চিত নই যে ফাইলটি কোথা থেকে তৈরি হচ্ছে .. সেই ফাইলটি কি বেস 64 এনকোডে সংরক্ষণ করা হচ্ছে? (আমি বেস 64 এর সাথে খুব বেশি পরিচিত নই)
রাস্তার আলো

@ স্ট্রিটলাইট: "ফাইল" (অর্থাত্ ডেটা) জাভাস্ক্রিপ্ট দ্বারা উত্পাদিত হয়েছে। এই প্রকল্পের প্রসঙ্গে (এবং সম্ভবত বেশিরভাগ এখানে) ধরে নেওয়া যায় যে আপনার পছন্দসই ডেটা জেএস ভেরিয়েবলে পাওয়ার কোনও উপায় আছে। পার্থক্যটি হ'ল এটি কোনও data:...ইউআরআই এর মাধ্যমে ব্যবহারকারীর কাছে উপস্থাপন করার পরিবর্তে that স্ক্রিপ্টটি সার্ভারে এটি পোস্ট করার জন্য একটি ফর্ম তৈরি করে। এবং সার্ভারটি সম্ভবত এটি সরাসরি HTTP "ডাউনলোড" প্রতিক্রিয়া হিসাবে প্রতিধ্বনিত করে (অর্থাত্ ফাইলের নাম উল্লেখ করে উপযুক্ত বিষয়বস্তু-বিশৃঙ্খলা শিরোনাম সহ)।
আন্দ্রেজেজ ডয়েল

4

এখানে হোল্ফের সংস্করণটির ভিত্তিতে একটি jQuery সংস্করণ রয়েছে এবং এটি ক্রোম এবং ফায়ারফক্সের সাথে কাজ করে যেখানে তার সংস্করণটি কেবল ক্রোমের সাথেই কাজ করে বলে মনে হচ্ছে। এটি করার জন্য শরীরে কিছু যুক্ত করা কিছুটা আশ্চর্যজনক তবে কারও কাছে যদি আরও ভাল বিকল্প থাকে তবে আমি এটির জন্যই আছি।

var exportFileName = "export-" + filename;
$('<a></a>', {
    "download": exportFileName,
    "href": "data:," + JSON.stringify(exportData, null,5),
    "id": "exportDataID"
}).appendTo("body")[0].click().remove();

1
JQuery 1.11 সহ আমি .রেভ () এর কারণে একটি ব্যতিক্রম পাই। আমি এর আগে $().appendTo()ভেরিয়েবলকে কল করে কল variable.click(); variable.remove()
করেছিলাম

@ p0lar_bear আপনার যে কোনও jQuery এর সাথে এই ব্যতিক্রম হওয়া উচিত, কারণ যে [0]কোনও "jQuery উপাদান" থেকে প্রাপ্ত হওয়াতে এটি প্রতিনিধিত্ব করে এমন প্রথম DOM উপাদানটি ফিরিয়ে আনতে হবে, যা মূলত আপনাকে jQuery এর বাইরে নিয়ে যায়।
drzaus

আপনি আসলে / সংযোজন করতে প্রয়োজন করা উচিত নয় এ সব উপাদান অপসারণ - এ মন্তব্য দেখতে stackoverflow.com/a/17311705/1037948
drzaus

3

এটি এক ধরণের হ্যাকিশ, তবে আমি আগেও একই পরিস্থিতিতে ছিলাম। আমি গতিশীলভাবে জাভাস্ক্রিপ্টে একটি পাঠ্য ফাইল তৈরি করেছিলাম এবং এটি ডেটা-ইউআরআই দিয়ে এনকোড করে ডাউনলোডের জন্য সরবরাহ করতে চেয়েছিলাম।

ক্ষুদ্রতর প্রধান ব্যবহারকারীর হস্তক্ষেপে এটি সম্ভব । একটি লিঙ্ক তৈরি করুন <a href="data:...">right-click me and select "Save Link As..." and save as "example.txt"</a>। যেমনটি আমি বলেছি, এটি অনুগ্রহজনক তবে আপনার যদি কোনও পেশাদার সমাধানের প্রয়োজন না হয় তবে এটি কাজ করে।

নামটি প্রথমে ক্লিপবোর্ডে অনুলিপি করতে ফ্ল্যাশ ব্যবহার করে এটি কম বেদনাদায়ক হতে পারে। অবশ্যই যদি আপনি নিজেকে ফ্ল্যাশ বা জাভা ব্যবহার করতে দেন (এখন আমি মনে করি কম এবং কম ব্রাউজার সমর্থন সহ?), আপনি সম্ভবত এটি করার অন্য কোনও উপায় খুঁজে পেতে পারেন।


এটি কোনও সমাধান নয় এবং যা চাওয়া হয়েছিল তা পূরণ করে না। দুঃখিত।
jcolebrand

7
লল @ "গৌণ ব্যবহারকারীর হস্তক্ষেপ"। আপনার জন্য পুরো জিনিসটি ব্যবহারকারীকে পাওয়া "ক্ষুদ্র ব্যবহারকারীর হস্তক্ষেপ" নয়।
অরবিট

উত্পন্ন লিঙ্কটি ট্রিগার করতে এটি স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / ১1৩১১645৫/২ এর সাথে সংযুক্ত করুন এবং আপনার ব্যবহারকারীর হস্তক্ষেপের প্রয়োজন নেই। অন্যান্য অনেক উত্তর দ্বারা উল্লিখিত একটি নাম প্রস্তাব করার জন্য আপনি HTML5 downloadবৈশিষ্ট্যটি নির্দিষ্ট করতে পারেন ।
ড্রজাউস

এটি সাফারির জন্য দুর্দান্ত কাজ। ডাউনলোডের বৈশিষ্ট্যটি সমর্থিত নয় এবং লিংকের পাঠ্য আপডেট করার জন্য মডার্নিজার ব্যবহার করুন!
লিটলডিনামো

2

এটি ফায়ারফক্স ৪৩.০ এর সাথে কাজ করে (পুরানো পরীক্ষিত নয়):

dl.js:

function download() {
  var msg="Hello world!";
  var blob = new File([msg], "hello.bin", {"type": "application/octet-stream"});

  var a = document.createElement("a");
  a.href = URL.createObjectURL(blob);

  window.location.href=a;
}

dl.html

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="utf-8"/>
    <title>Test</title>
    <script type="text/javascript" src="dl.js"></script>
</head>

<body>
<button id="create" type="button" onclick="download();">Download</button>
</body>
</html>

যদি বোতামটি ক্লিক করা হয় তবে এটি হ্যালো.বিন নামের একটি ফাইল ডাউনলোডের জন্য অফার করেছে। কৌশলটি ব্লবের পরিবর্তে ফাইল ব্যবহার করা ।

তথ্যসূত্র: https://developer.mozilla.org/de/docs/Web/API/File


0
var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6
var sessionId ='\n';
var token = '\n';
var caseId = CaseIDNumber + '\n';
var url = casewebUrl+'\n';
var uri = sessionId + token + caseId + url;//data in file
var fileName = "file.i4cvf";// any file name with any extension
if (isIE)
    {
            var fileData = ['\ufeff' + uri];
            var blobObject = new Blob(fileData);
            window.navigator.msSaveOrOpenBlob(blobObject, fileName);
    }
    else //chrome
    {
        window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
         window.requestFileSystem(window.TEMPORARY, 1024 * 1024, function (fs) {
            fs.root.getFile(fileName, { create: true }, function (fileEntry) { 
                fileEntry.createWriter(function (fileWriter) {
                    var fileData = ['\ufeff' + uri];
                    var blob = new Blob(fileData);
                    fileWriter.addEventListener("writeend", function () {
                        var fileUrl = fileEntry.toURL();
                        var link = document.createElement('a');
                        link.href = fileUrl;
                        link.download = fileName;
                        document.body.appendChild(link);
                        link.click();
                        document.body.removeChild(link);
                    }, false);
                    fileWriter.write(blob);
                }, function () { });
            }, function () { });
         }, function () { });
    }

1
পিএলএস আপনার উত্তরের আরও বিশদ ব্যাখ্যা যুক্ত করুন - স্ট্যাকওভারফ্লো.com
সেবাস্তিয়ান ব্রোশ

1
এই উত্তরটি আবর্জনা
জোনাথন টেইলর

-2

আপনি ক্রোম এবং ফায়ারফক্সে আসলে এটি অর্জন করতে পারেন achieve

নিম্নলিখিত ইউআরএলটি ব্যবহার করে দেখুন এটি ব্যবহার করা কোডটি ডাউনলোড করবে।

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