জাভাস্ক্রিপ্ট / jQuery ব্যবহার করে ফাইল ডাউনলোড করুন


357

আমার এখানে একটি অনুরূপ প্রয়োজনীয়তা উল্লেখ করা হয়েছে

আমার যখন ব্যবহারকারীর ব্রাউজারটি নিজেই ডাউনলোড শুরু করা দরকার start $('a#someID').click();

তবে আমি window.hrefপদ্ধতিটি ব্যবহার করতে পারছি না , যেহেতু এটি আপনার ডাউনলোড করার চেষ্টা করা ফাইলটির সাথে বর্তমান পৃষ্ঠার সামগ্রীগুলি প্রতিস্থাপন করে।

পরিবর্তে আমি নতুন উইন্ডো / ট্যাবে ডাউনলোড খুলতে চাই। এটা কিভাবে সম্ভব?


আমি সম্পর্কিত প্রশ্নগুলিতে অনেক উত্তর চেষ্টা করেছি, এবং এটিই সুনির্দিষ্ট উত্তর
বাসজ

Window.location.href সেট করা আমার পক্ষে কাজ করে। উইন্ডো বিষয়বস্তু পরিবর্তন হয় না। আমি ধরে নিলাম আপনি ভুল কনটেন্টটাইপ ব্যবহার করেছেন?
ব্লু ই

উত্তর:


378

একটি অদৃশ্য ব্যবহার করুন <iframe>:

<iframe id="my_iframe" style="display:none;"></iframe>
<script>
function Download(url) {
    document.getElementById('my_iframe').src = url;
};
</script>

ব্রাউজারকে কোনও ফাইল ডাউনলোড করতে বাধ্য করার জন্য এটি অন্যথায় রেন্ডারিং করতে সক্ষম হবে (যেমন এইচটিএমএল বা পাঠ্য ফাইলগুলির মতো), আপনাকে ফাইলের মাইম টাইপকে একটি অযৌক্তিক মান, যেমন application/x-please-download-meবা বিকল্প হিসাবে সেট করার জন্য সার্ভারের প্রয়োজন youapplication/octet-stream , যা স্বেচ্ছাচারী বাইনারি হিসাবে ব্যবহৃত ডেটা।

আপনি যদি এটি কেবল একটি নতুন ট্যাবে খুলতে চান তবে এটি করার একমাত্র উপায় হ'ল ব্যবহারকারীর পক্ষে তার targetবৈশিষ্ট্যটি সেট করে একটি লিঙ্কে ক্লিক করা to_blank

JQuery এ:

$('a#someID').attr({target: '_blank', 
                    href  : 'http://localhost/directory/file.pdf'});

যখনই সেই লিঙ্কটি ক্লিক করা হবে, এটি ফাইলটি একটি নতুন ট্যাব / উইন্ডোতে ডাউনলোড করবে।


4
একটি ওয়েবপৃষ্ঠা স্বয়ংক্রিয়ভাবে একটি নতুন ট্যাব খুলতে পারে না। ব্রাউজারটি ডাউনলোড করতে বাধ্য করার জন্য, অ্যাপ্লিকেশন / এক্স-প্লিজ-ডাউনলোড-এর মতো ননসেন্স মাইম-টাইপের সাথে পিডিএফ ফাইলটি প্রেরণ করতে সার্ভারটি পান
র্যান্ডি দ্য দেব

14
সুন্দরভাবে সম্পন্ন! সমস্যাটি ভালভাবে সমাধান করে। তবে আপনি ব্যবহার করতে পারেন: iframe.style.display = 'none'; এটি ইফ্রেমকে পুরোপুরি আড়াল করবে। আপনার বর্তমান প্রয়োগটি iframe অদৃশ্য করে তুলবে, তবে iframe এখনও পৃষ্ঠার নীচে অতিরিক্ত সাদা স্থান তৈরির কারণে স্থান গ্রহণ করবে।
আকরিকোস

2
এটি "আধা" আমার পক্ষে কাজ করে। আমি নিম্নলিখিত সহজ পরীক্ষাটি এইচটিএমএল তৈরি করেছি: <html> <body> <iframe src = "fileurl"> </iframe> </body> </html> এবং এটি ডাউনলোড হয়ে যায়, তবে ক্রোম কনসোলে আমি দেখতে পেয়েছি যে ডাউনলোডটি "বাতিল" হয়েছিল এবং লাল রঙে প্রদর্শিত হয়েছিল। এটি একটি বৃহত্তর মোবাইল ওয়েব অ্যাপ্লিকেশনটির একটি অংশ এবং এটি বাতিল হয়ে যাওয়ার ফলে অ্যাপ্লিকেশনটি ভেঙে যায় কারণ এটি একটি সাধারণ ওয়েব ব্যর্থতা উত্থাপন করে। কোন উপায় এই কাছাকাছি?
সাগি মান

27
চমৎকার স্নিপেট। তবে অযৌক্তিক জিনিসের ধরণ নির্ধারণ করা কিছুটা ঝামেলাজনক। এটি রেন্ডার করতে পারে এমন কোনও ফাইল ডাউনলোড করতে ব্রাউজারকে জিজ্ঞাসা করতে, নিম্নলিখিত শিরোনামটি ব্যবহার করুন: Content-Disposition: attachment; filename="downloaded.pdf"(আপনার অবশ্যই প্রয়োজন মতো ফাইলের নামটি কাস্টমাইজ করতে পারেন)।
rixo

2
সার্ভার ছাড়াই আমি কীভাবে ডাউনলোডটি জোর করব? সুতরাং কিছু জাভাস্ক্রিপ্ট সহ কেবল একটি এইচটিএমএল পৃষ্ঠা।
রডরিগো রুইজ

221

2019 আধুনিক ব্রাউজার আপডেট

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

  • তুলনামূলকভাবে আধুনিক ব্রাউজারের প্রয়োজন
  • যদি ফাইলটি খুব বড় আকারের প্রত্যাশিত হয় তবে আপনার সম্ভবত মূল পদ্ধতির (ইফ্রেমে এবং কুকি) অনুরূপ কিছু করা উচিত কারণ নীচের কিছু অপারেশন সম্ভবত ফাইলটি ডাউনলোড করা এবং / অথবা অন্যান্য আকর্ষণীয় সিপিইউর অন্তত বৃহত্তর সিস্টেমে মেমরি গ্রহণ করতে পারে ক্ষতিকর দিক.

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(resp => resp.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    // the filename you want
    a.download = 'todo-1.json';
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(url);
    alert('your file has downloaded!'); // or you know, something with better UX...
  })
  .catch(() => alert('oh no!'));

2012 আসল jQuery / iframe / কুকি ভিত্তিক পদ্ধতির

আমি jQuery ফাইল ডাউনলোড প্লাগইন তৈরি করেছি ( ডেমো ) ( গিটহাব ) যা আপনার পরিস্থিতির সাথে সহায়তা করতে পারে। এটি আইফ্রেমের সাথে বেশ একইভাবে কাজ করে তবে কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে যা আমি বেশ সহজেই পেয়েছি:

  • সুন্দর ভিজ্যুয়াল (jQuery ইউআই ডায়ালগ, তবে প্রয়োজন নেই) দিয়ে সেটআপ করা খুব সহজ, সবকিছুও পরীক্ষিত

  • ব্যবহারকারীরা সেখান থেকে কোনও ফাইল ডাউনলোড শুরু করে একই পৃষ্ঠাটিকে কখনও ছাড়বে না। আধুনিক ওয়েব অ্যাপ্লিকেশনগুলির জন্য এই বৈশিষ্ট্যটি গুরুত্বপূর্ণ হয়ে উঠছে

  • সাফল্যক্যালব্যাক এবং ব্যর্থক্যালব্যাক ফাংশন ব্যবহারকারীকে উভয় পরিস্থিতিতে যা দেখায় সে সম্পর্কে আপনাকে সুস্পষ্ট হতে দেয়

  • জিকিউরি ইউআইয়ের সাথে একত্রে একটি বিকাশকারী সহজেই একটি মডেল প্রদর্শন করতে পারেন যা ব্যবহারকারীকে জানায় যে কোনও ফাইল ডাউনলোড হচ্ছে, ডাউনলোড শুরুর পরে মডেলটি ছিন্ন করতে পারেন বা এমনকি ব্যবহারকারীকে বন্ধুত্বপূর্ণ উপায়ে জানান যে কোনও ত্রুটি ঘটেছে। এর উদাহরণের জন্য ডেমোটি দেখুন । আশা করি এটি কাউকে সাহায্য করবে!

প্রতিশ্রুতি সহ প্লাগইন উত্সটি ব্যবহার করে এখানে একটি সাধারণ ব্যবহারের কেস ডেমো রয়েছে । ডেমো পৃষ্ঠা অনেক অন্যান্য, 'ভাল ইউএক্স' পাশাপাশি উদাহরণ অন্তর্ভুক্ত করা হয়েছে।

$.fileDownload('some/file.pdf')
    .done(function () { alert('File download a success!'); })
    .fail(function () { alert('File download failed!'); });

@ জনকুলভিনার: আমি কি আপনার পোস্ট পদ্ধতিতে জসন ডেটা পাঠাতে পারি? আমি এটি চেষ্টা করে ব্যর্থ হয়েছি। আপনি কি আমাকে নমুনা দিতে পারবেন
সারাভানান

পরামিতিগুলিতে কল করা কি সম্ভব? আসুন আমরা বলতে পারি যে সার্ভারটি যে ফাইলটি ডাউনলোড করতে চাইছে তা উত্পন্ন করার জন্য আমাকে কিছু আইডি পাস করতে হবে, আমি কীভাবে এটি করতে পারি? ধন্যবাদ
ওমর স্ক্লিফার

100. করেছেন। আপনার সময়ের জন্য ধন্যবাদ - এটি সত্যিই মূল্যবান। অনুদানের জন্য একটি পেপাল লিঙ্ক স্থাপন বিবেচনা করুন। আমি দান করতাম।
স্টিফান শিনকেল

আমি চেষ্টা করেছিলাম কিন্তু কলব্যাকগুলি কখনই কার্যকর হয় না। প্লাগ-ইন কেবল পরিষেবাটিতে ত্রুটি ফিরে আসার পরেও নতুন ট্যাবে পরিষেবা প্রতিক্রিয়াটি খুলবে। আমি চাই না যে অ্যাপ্লিকেশনটি নতুন ট্যাব খুলবে এবং ত্রুটি নিক্ষেপ করা হলে পরিষেবা প্রতিক্রিয়া প্রদর্শন করবে। আমি সাফল্য এবং ব্যর্থতার উপর ফাইলডাউনলোড সত্য এবং মিথ্যা ইঙ্গিত করতে কুকিটি জুড়েছি তবুও প্রতিক্রিয়াটি নতুন ট্যাবে উন্মুক্ত হচ্ছে .. এটি ঠিক করার কোনও উপায় .. আমি get পদ্ধতি ব্যবহার করছি।
বিশাল গুলতি

1
@ মার্কআমেরি যা অন্যান্য উত্তরগুলি সূচিত করে তেমন কাজ করে। ডাউনলোডটি কখন শুরু হয়, কখন এটি শেষ হয় এবং যদি ভুল হয় তবে কোনটি কার্যকর। আমি "আগুন এবং ভুলে যাও" বিকল্পের উত্তরে এটি যুক্ত করতে পারতাম। এছাড়াও [ডাউনলোড] বৈশিষ্ট্যটি কোনও পোস্ট বা বিদেশী কোনও কিছুর জন্য অনুমতি দেয় না।
জন কালভিনার

142
function downloadURI(uri, name) 
{
    var link = document.createElement("a");
    // If you don't know the name or want to use
    // the webserver default set name = ''
    link.setAttribute('download', name);
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    link.remove();
}

আপনার লক্ষ্যযুক্ত ব্রাউজার (গুলি) উপরের স্নিপেটটি সুচারুভাবে চালাবে কিনা তা পরীক্ষা করুন:
http://caniuse.com/#feat=download


1
ফাইলের নাম পরিবর্তন হয়নি ... এপ্রিল
২০১ ch

7
আমার জন্য এটি নিখুঁত হবে তবে এটি ফায়ারফক্সেও কাজ করে না। কোন ধারণা?
g07kore 12'15

2
Caniuse.com/#feat=download এ উল্লিখিত হিসাবে , এটি কেবল সাম্প্রতিক ফায়ারফক্স এবং ক্রোম প্রকাশে একই-উত্স লিঙ্কগুলির জন্য কাজ করে। সুতরাং যদি আপনার লিঙ্কগুলি অন্য ডোমেনের দিকে নির্দেশ করে তবে এটি এখনকার জন্য খুব কমই কাজ করে।
জিন-ব্যাপটিস্ট

9
ফায়ারফক্সে এটি কাজ document.body.appendChild(link)করার জন্য, ক্লিকের আগে এবং ক্লিকের পরে link.remove()ডমকে দূষিত করা এড়ানোর জন্য করতে পারেন ।
ওক্কু

1
link.download = ""এটির আসল ফাইলটির নামটি ধরে রাখতে এবং একটি সেট করা থেকে বাঁচতে আপনিও করতে পারেন ।
ওক্কু

69

আমি অবাক হয়েছি যে অনেক লোকই কোনও উপাদানগুলির ডাউনলোড বৈশিষ্ট্য সম্পর্কে জানেন না। এটি সম্পর্কে শব্দ ছড়িয়ে সাহায্য করুন! আপনার কাছে একটি লুকানো এইচটিএমএল লিঙ্ক থাকতে পারে এবং এতে ক্লিক করে নকল করতে পারেন। এইচটিএমএল লিঙ্কটিতে যদি ডাউনলোডের বৈশিষ্ট্য থাকে তবে এটি ফাইল ডাউনলোড করে, তা দেখে না, তা যাই হোক না কেন। এখানে কোড। এটি যদি কোনও বিড়ালের ছবি খুঁজে পায় তবে এটি ডাউনলোড করবে download

document.getElementById('download').click();
<a href="https://docs.google.com/uc?id=0B0jH18Lft7ypSmRjdWg1c082Y2M" download id="download" hidden></a>

দ্রষ্টব্য: এটি সমস্ত ব্রাউজারগুলিতে সমর্থিত নয়: http://www.w3schools.com/tags/att_a_download.asp


12
আইই এবং সাফারি
ম্যাটপ্যাগ 26:25

9
ক্রোম ডাউনলোড হয় তবে ফায়ারফক্স কেবল ছবিটি দেখায়।
শরণ 21

নির্বাহযোগ্য স্নিপেট যদিও প্রদানের জন্য +1। আমাকে এটি পরীক্ষা করার জন্য সময় সাশ্রয় করেছে কেবল এটি কার্যকর হবে না তা খুঁজে বের করার জন্য।
ডুপি


ক্রোম mp4এস এর জন্য ডাউনলোড করে না
নিকোoo

53

আমি jQuery এর পরিবর্তে ডাউনলোডের জন্য অ্যাট্রিবিউটটি ব্যবহার করারdownload পরামর্শ দিচ্ছি :

<a href="your_link" download> file_name </a>

এটি আপনার ফাইলটি না খুলে ডাউনলোড করবে।


5
এটি কেবল ক্রোম, ফায়ারফক্স, অপেরা এবং আইই (> = 13.0) সমর্থন করবে
কুনাল কাককাদ

প্রান্ত> = 13, আইই নয়। এজ 13 টি প্রয়োগগুলি বগি কারণ ফাইলটির নাম উপেক্ষা করা হয় এবং পরিবর্তে আপনি নাম হিসাবে একটি আইডি সহ একটি ফাইল পান।
ডেভিড

8
আমার মতে, এটি প্রশ্নের সঠিক উত্তর। আপনার যদি পুরানো ব্রাউজারগুলি সমর্থন করতে হয় এবং কোনও কাজের ভিত্তিতে প্রয়োজন হয় তবে অন্যান্য উত্তরগুলি অর্থবোধ করে।
ক্র্যাবক্রিউশারক্ল্যামক্লাক্টর

19

আপনি যদি ইতিমধ্যে jQuery ব্যবহার করে থাকেন তবে
অ্যান্ড্রুয়ের উত্তরের একটি ছোট স্নিপেট একটি jQuery সংস্করণ উত্পাদন করতে আপনি এর অ্যাডভেঞ্চার নিতে পারেন :

var $idown;  // Keep it outside of the function, so it's initialized once.
downloadURL : function(url) {
  if ($idown) {
    $idown.attr('src',url);
  } else {
    $idown = $('<iframe>', { id:'idown', src:url }).hide().appendTo('body');
  }
},
//... How to use it:
downloadURL('http://whatever.com/file.pdf');

এফওয়াইআই, কেউ পরামর্শ দিয়েছেন (আমার পোস্ট সম্পাদনা করার মাধ্যমে) $ idown.attr ('src', url) যুক্ত করার জন্য; প্রথমবারের জন্য iframe তৈরি করার পরে। আমি মনে করি না প্রয়োজন। এটি ইতিমধ্যে তৈরির পদক্ষেপে 'src: url' সেট করছে।
কর্বাচো

এছাড়াও মন্তব্য করার জন্য যে অবশেষে আমি এই সমাধানটি ব্যবহার করিনি কারণ আইআই 9 গতিশীলভাবে তৈরি আইফ্রেমে পছন্দ করেনি যখন আপনি https ওয়েবের অভ্যন্তরে আছেন: HTTP: // // আমাকে "উইন্ডো.লোকেশন হিফ" ব্যবহার করতে হয়েছিল, এমন একটি সমাধান যা কিছু
অসুবিধাও বোধ

"if ($ idown)" অংশটি সর্বশেষতম ক্রোমে (24) আমার পক্ষে কাজ করে নি, তবে কেবলমাত্র অফুরম সংখ্যক আইফ্রেমে তৈরি করেছে। সম্ভবত কারণ আমি একই সাথে 12 টি জিনিস ডাউনলোড করতে চেয়েছিলাম?
নেসুর

6
ifবিবৃতি সত্যিই হওয়া উচিত:if( $idown && $idown.length > 0 )
iOnline247

3
ক্রোমে কিছু
করেনা

11

ক্রোম, ফায়ারফক্স এবং আইই 8 এবং এর উপরে কাজ করে।

var link=document.createElement('a');
document.body.appendChild(link);
link.href=url ;
link.click();

আপনি যদি ডিওএমে লিঙ্ক যুক্ত না করেন তবে এটিও কাজ করে।
জনি কার

সার্ভার থেকে ফিরে আসা শিরোনামগুলি অন্যথায় এটি করার নির্দেশ urlনা দিলে এটি এ থেকে ডাউনলোড না করে কেবল নেভিগেট করবে।
মার্ক আমেরিকা

10

ব্যবহার করে সাধারণ উদাহরণ iframe

function downloadURL(url) {
    var hiddenIFrameID = 'hiddenDownloader',
        iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
};

তারপরে যেখানেই আপনি চান সেখানে ফাংশনটি কল করুন:

downloadURL('path/to/my/file');


10

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

window.location.assign('any url or file path')

আপনি যদি নিজেকে কন্টেন্ট টাইপ সেট করতে পারেন তবে এটি সম্ভবত সবচেয়ে সহজ সমাধান। আমি এটি হিসাবে ব্যবহার করি: window.location.href = downloadFileUrl;
ব্লুয়ে

অ্যাডমিন যদি এর চেয়ে বেশি ইউজারকে ইউআরএল দেখাতে না চান?
নরেন ভার্মা

9

মাত্র সাত বছর পরে এখানে আইফ্রেমে বা লিঙ্কের পরিবর্তে ফর্ম ব্যবহার করে একটি লাইন jQuery সমাধান আসে:

$('<form></form>')
     .attr('action', filePath)
     .appendTo('body').submit().remove();

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

  • ক্রোম 55
  • ফায়ারফক্স 50
  • এজ IE8-10
  • আইওএস 10 (সাফারি / ক্রোম)
  • অ্যান্ড্রয়েড ক্রোম

যদি কেউ এই সমাধানটির সাথে কোনও ডাউনসাইড সম্পর্কে জানেন তবে আমি তাদের সম্পর্কে শুনে খুব খুশি হব।


পূর্ণ ডেমো:

<html>
<head><script src="https://code.jquery.com/jquery-1.11.3.js"></script></head>
<body>
<script>
    var filePath = window.prompt("Enter a file URL","http://jqueryui.com/resources/download/jquery-ui-1.12.1.zip");
    $('<form></form>').attr('action', filePath).appendTo('body').submit().remove();
</script>
</body>
</html>

7
যদি আপনার filePathকোনও কোয়েরিস্ট্রিং থাকে তবে এটি কাজ করে না যেহেতু একটি ফর্ম জমা দেওয়ার পরে ক্রিয়াকলাপটি ক্রিয়াকলাপটিতে ওভাররাইট করে।
বোবার্ট

1
আমি ফর্মটিতে একটি ইনপুট যুক্ত করে এটিকে জড়িত করেছি: var authInput = $("<input>").attr("type", "hidden").attr("name", "myQsKey").val('MyQsValue'); $('<form></form>') .attr('action', filePath) .append($(authInput)) .appendTo('body').submit().remove();এটি সমান পরিমাণে আয়েসিং:filepath?myQsKey=myValue
হ্যারাল্ড হোয়ারউইক

এটি ওয়েবসকেটগুলিও বন্ধ করে দেয়।
radu122

2
এটিকে সেট window.locationকরার মতো জটিল উপায় বলে মনে হচ্ছে filePath। শুধু window.location = filePath;একই কাজ করবে।
আইভো স্মিটস

কিনা একটা ব্যাপার তথাপি downside হয় এই সমাধান, কোনটাই জন্য, আপনাকে কোনো প্রদান করেন নি গোলমালে একটি লিঙ্ক উপর এই ব্যবহার করতে। (এবং এর একটি নেতিবাচক দিক রয়েছে: downloadসার্ভারটি যে শিরোনাম দেয় আপনি যে কোনও aউপাদান দিয়ে যা করতে পারেন তা নির্বিশেষে আপনি ডাউনলোড করতে চান তা ব্রাউজারকে বলতে আপনি এই বৈশিষ্ট্যটি ব্যবহার করতে পারবেন না ))
মার্ক অ্যামেরি

5

আমি জানি না যে প্রশ্নটি খুব পুরানো কিনা তবে উইন্ডোটি ডাউনলোড করার জন্য ইউআরএল-এর অবস্থান নির্ধারণ কাজ করবে, যতক্ষণ ডাউনলোড মাইম টাইপ সঠিক (উদাহরণস্বরূপ একটি জিপ সংরক্ষণাগার)।

var download = function(downloadURL) {

   location = downloadURL;

});

download('http://example.com/archive.zip'); //correct usage
download('http://example.com/page.html'); //DON'T

5

আমি নীচের স্নিপেট ব্যবহার করে শেষ করেছি এবং এটি বেশিরভাগ ব্রাউজারে কাজ করে, যদিও IE তে পরীক্ষা করা হয়নি।

let data = JSON.stringify([{email: "test@domain.com", name: "test"}, {email: "anothertest@example.com", name: "anothertest"}]);

let type = "application/json", name = "testfile.json";
downloader(data, type, name)

function downloader(data, type, name) {
	let blob = new Blob([data], {type});
	let url = window.URL.createObjectURL(blob);
	downloadURI(url, name);
	window.URL.revokeObjectURL(url);
}

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

হালনাগাদ

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

function downloader(data, type, name) {
    let blob = new Blob([data], {type});
    let url = window.URL.createObjectURL(blob);
    downloadURI(url, name);
    window.URL.revokeObjectURL(url);
}

ব্যবহার করে লাভ কী হলো MouseEventএখানে সবসময় পরিবর্তে ব্যবহার click? এবং নথিতে ক্লিক করার আগে লিঙ্কটি যুক্ত করুন কেন? স্ট্যাকওভারফ্লো . com / a / 23013574 / 1709587 এ দেখানো সহজ পদ্ধতির তুলনায় এর সুবিধাগুলি থাকতে পারে , তবে যদি তা হয় তবে সেগুলি এখানে ব্যাখ্যা করা হয়নি।
মার্ক আমেরিকা

এই উত্তরটি পোস্ট করে কিছুক্ষণ হয়ে গেল। কোডটির এই অপ্রয়োজনীয় লাইনের পিছনে কোনও কারণ আছে কিনা তা আমি মনে করতে পারি না।
আব্ক

3

ব্রেকারের উত্তরটি কল্পনা করার জন্য এটি এফএফ এবং আইই তে সমর্থিত:

var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

function downloadURI(uri, name) {
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    link.dispatchEvent(evt);
}

অন্য কথায়, কেবল dispatchEventপরিবর্তে একটি ফাংশন ব্যবহার করুন click();


এটি কীভাবে উন্নতি হয়? এটি একই জিনিসটি করার আরও জটিল উপায় বলে মনে হয়।
মার্ক আমেরিকা

3

সম্ভবত আপনার জাভাস্ক্রিপ্টটি এমন কোনও পৃষ্ঠা খুলুন যা কেবল কোনও ফাইল ডাউনলোড করে, যেমন আপনি যখন কোনও নতুন ট্যাবে ডাউনলোডের লিঙ্কটি টেনে আনেন তখন:

Window.open("https://www.MyServer.
Org/downloads/ardiuno/WgiWho=?:8080")

খোলা উইন্ডোটি দিয়ে একটি ডাউনলোড পৃষ্ঠা খুলুন যা স্বয়ংক্রিয়ভাবে বন্ধ হয়।


1
এটি একটি পপআপ উইন্ডো তৈরি করে, যা বেশিরভাগ ব্রাউজারগুলি অবরুদ্ধ করে থাকে
অ্যাশটন ওয়েয়ার্সডর্ফ

3

ফায়ারফক্স, ক্রোম এবং আইই কোডের জন্য ডেটা ডাউনলোড করার জন্য সর্বাধিক সম্পূর্ণ এবং কার্যকারী (পরীক্ষিত) কোড অনুসরণ করা হচ্ছে। ধরে নিন যে ডেটা টেক্সারিয়া ক্ষেত্রে রয়েছে, এতে আইডি = 'টেক্সারিয়া_রেয়া' রয়েছে এবং ফাইল নাম ফাইলের নাম যেখানে ডেটা ডাউনলোড হবে।

function download(filename) {
    if (typeof filename==='undefined') filename = ""; // default
    value = document.getElementById('textarea_area').value;

    filetype="text/*";
    extension=filename.substring(filename.lastIndexOf("."));
    for (var i = 0; i < extToMIME.length; i++) {
        if (extToMIME[i][0].localeCompare(extension)==0) {
            filetype=extToMIME[i][1];
            break;
        }
    }


    var pom = document.createElement('a');
    pom.setAttribute('href', 'data: '+filetype+';charset=utf-8,' + '\ufeff' + encodeURIComponent(value)); // Added BOM too
    pom.setAttribute('download', filename);


    if (document.createEvent) {
        if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) { // IE
            blobObject = new Blob(['\ufeff'+value]);
            window.navigator.msSaveBlob(blobObject, filename);
        } else { // FF, Chrome
            var event = document.createEvent('MouseEvents');
            event.initEvent('click', true, true);
            pom.dispatchEvent(event);
        }
    } else if( document.createEventObject ) { // Have No Idea
        var evObj = document.createEventObject();
        pom.fireEvent( 'onclick' , evObj );
    } else { // For Any Case
        pom.click();
    }

}

এবং তারপরে কেবল কল করুন

<a href="javascript:download();">Download</a>

ডাউনলোড শুরু করার জন্য।

ডাউনলোড ডায়লগের জন্য সঠিক মাইম টাইপ সেট করার জন্য অ্যারে নিম্নলিখিত হতে পারে:

// ----------------------- Extensions to MIME --------- //

        // List of mime types
        // combination of values from Windows 7 Registry and 
        // from C:\Windows\System32\inetsrv\config\applicationHost.config
        // some added, including .7z and .dat
    var extToMIME = [
        [".323", "text/h323"],
        [".3g2", "video/3gpp2"],
        [".3gp", "video/3gpp"],
        [".3gp2", "video/3gpp2"],
        [".3gpp", "video/3gpp"],
        [".7z", "application/x-7z-compressed"],
        [".aa", "audio/audible"],
        [".AAC", "audio/aac"],
        [".aaf", "application/octet-stream"],
        [".aax", "audio/vnd.audible.aax"],
        [".ac3", "audio/ac3"],
        [".aca", "application/octet-stream"],
        [".accda", "application/msaccess.addin"],
        [".accdb", "application/msaccess"],
        [".accdc", "application/msaccess.cab"],
        [".accde", "application/msaccess"],
        [".accdr", "application/msaccess.runtime"],
        [".accdt", "application/msaccess"],
        [".accdw", "application/msaccess.webapplication"],
        [".accft", "application/msaccess.ftemplate"],
        [".acx", "application/internet-property-stream"],
        [".AddIn", "text/xml"],
        [".ade", "application/msaccess"],
        [".adobebridge", "application/x-bridge-url"],
        [".adp", "application/msaccess"],
        [".ADT", "audio/vnd.dlna.adts"],
        [".ADTS", "audio/aac"],
        [".afm", "application/octet-stream"],
        [".ai", "application/postscript"],
        [".aif", "audio/x-aiff"],
        [".aifc", "audio/aiff"],
        [".aiff", "audio/aiff"],
        [".air", "application/vnd.adobe.air-application-installer-package+zip"],
        [".amc", "application/x-mpeg"],
        [".application", "application/x-ms-application"],
        [".art", "image/x-jg"],
        [".asa", "application/xml"],
        [".asax", "application/xml"],
        [".ascx", "application/xml"],
        [".asd", "application/octet-stream"],
        [".asf", "video/x-ms-asf"],
        [".ashx", "application/xml"],
        [".asi", "application/octet-stream"],
        [".asm", "text/plain"],
        [".asmx", "application/xml"],
        [".aspx", "application/xml"],
        [".asr", "video/x-ms-asf"],
        [".asx", "video/x-ms-asf"],
        [".atom", "application/atom+xml"],
        [".au", "audio/basic"],
        [".avi", "video/x-msvideo"],
        [".axs", "application/olescript"],
        [".bas", "text/plain"],
        [".bcpio", "application/x-bcpio"],
        [".bin", "application/octet-stream"],
        [".bmp", "image/bmp"],
        [".c", "text/plain"],
        [".cab", "application/octet-stream"],
        [".caf", "audio/x-caf"],
        [".calx", "application/vnd.ms-office.calx"],
        [".cat", "application/vnd.ms-pki.seccat"],
        [".cc", "text/plain"],
        [".cd", "text/plain"],
        [".cdda", "audio/aiff"],
        [".cdf", "application/x-cdf"],
        [".cer", "application/x-x509-ca-cert"],
        [".chm", "application/octet-stream"],
        [".class", "application/x-java-applet"],
        [".clp", "application/x-msclip"],
        [".cmx", "image/x-cmx"],
        [".cnf", "text/plain"],
        [".cod", "image/cis-cod"],
        [".config", "application/xml"],
        [".contact", "text/x-ms-contact"],
        [".coverage", "application/xml"],
        [".cpio", "application/x-cpio"],
        [".cpp", "text/plain"],
        [".crd", "application/x-mscardfile"],
        [".crl", "application/pkix-crl"],
        [".crt", "application/x-x509-ca-cert"],
        [".cs", "text/plain"],
        [".csdproj", "text/plain"],
        [".csh", "application/x-csh"],
        [".csproj", "text/plain"],
        [".css", "text/css"],
        [".csv", "text/csv"],
        [".cur", "application/octet-stream"],
        [".cxx", "text/plain"],
        [".dat", "application/octet-stream"],
        [".datasource", "application/xml"],
        [".dbproj", "text/plain"],
        [".dcr", "application/x-director"],
        [".def", "text/plain"],
        [".deploy", "application/octet-stream"],
        [".der", "application/x-x509-ca-cert"],
        [".dgml", "application/xml"],
        [".dib", "image/bmp"],
        [".dif", "video/x-dv"],
        [".dir", "application/x-director"],
        [".disco", "text/xml"],
        [".dll", "application/x-msdownload"],
        [".dll.config", "text/xml"],
        [".dlm", "text/dlm"],
        [".doc", "application/msword"],
        [".docm", "application/vnd.ms-word.document.macroEnabled.12"],
        [".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
        [".dot", "application/msword"],
        [".dotm", "application/vnd.ms-word.template.macroEnabled.12"],
        [".dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"],
        [".dsp", "application/octet-stream"],
        [".dsw", "text/plain"],
        [".dtd", "text/xml"],
        [".dtsConfig", "text/xml"],
        [".dv", "video/x-dv"],
        [".dvi", "application/x-dvi"],
        [".dwf", "drawing/x-dwf"],
        [".dwp", "application/octet-stream"],
        [".dxr", "application/x-director"],
        [".eml", "message/rfc822"],
        [".emz", "application/octet-stream"],
        [".eot", "application/octet-stream"],
        [".eps", "application/postscript"],
        [".etl", "application/etl"],
        [".etx", "text/x-setext"],
        [".evy", "application/envoy"],
        [".exe", "application/octet-stream"],
        [".exe.config", "text/xml"],
        [".fdf", "application/vnd.fdf"],
        [".fif", "application/fractals"],
        [".filters", "Application/xml"],
        [".fla", "application/octet-stream"],
        [".flr", "x-world/x-vrml"],
        [".flv", "video/x-flv"],
        [".fsscript", "application/fsharp-script"],
        [".fsx", "application/fsharp-script"],
        [".generictest", "application/xml"],
        [".gif", "image/gif"],
        [".group", "text/x-ms-group"],
        [".gsm", "audio/x-gsm"],
        [".gtar", "application/x-gtar"],
        [".gz", "application/x-gzip"],
        [".h", "text/plain"],
        [".hdf", "application/x-hdf"],
        [".hdml", "text/x-hdml"],
        [".hhc", "application/x-oleobject"],
        [".hhk", "application/octet-stream"],
        [".hhp", "application/octet-stream"],
        [".hlp", "application/winhlp"],
        [".hpp", "text/plain"],
        [".hqx", "application/mac-binhex40"],
        [".hta", "application/hta"],
        [".htc", "text/x-component"],
        [".htm", "text/html"],
        [".html", "text/html"],
        [".htt", "text/webviewhtml"],
        [".hxa", "application/xml"],
        [".hxc", "application/xml"],
        [".hxd", "application/octet-stream"],
        [".hxe", "application/xml"],
        [".hxf", "application/xml"],
        [".hxh", "application/octet-stream"],
        [".hxi", "application/octet-stream"],
        [".hxk", "application/xml"],
        [".hxq", "application/octet-stream"],
        [".hxr", "application/octet-stream"],
        [".hxs", "application/octet-stream"],
        [".hxt", "text/html"],
        [".hxv", "application/xml"],
        [".hxw", "application/octet-stream"],
        [".hxx", "text/plain"],
        [".i", "text/plain"],
        [".ico", "image/x-icon"],
        [".ics", "application/octet-stream"],
        [".idl", "text/plain"],
        [".ief", "image/ief"],
        [".iii", "application/x-iphone"],
        [".inc", "text/plain"],
        [".inf", "application/octet-stream"],
        [".inl", "text/plain"],
        [".ins", "application/x-internet-signup"],
        [".ipa", "application/x-itunes-ipa"],
        [".ipg", "application/x-itunes-ipg"],
        [".ipproj", "text/plain"],
        [".ipsw", "application/x-itunes-ipsw"],
        [".iqy", "text/x-ms-iqy"],
        [".isp", "application/x-internet-signup"],
        [".ite", "application/x-itunes-ite"],
        [".itlp", "application/x-itunes-itlp"],
        [".itms", "application/x-itunes-itms"],
        [".itpc", "application/x-itunes-itpc"],
        [".IVF", "video/x-ivf"],
        [".jar", "application/java-archive"],
        [".java", "application/octet-stream"],
        [".jck", "application/liquidmotion"],
        [".jcz", "application/liquidmotion"],
        [".jfif", "image/pjpeg"],
        [".jnlp", "application/x-java-jnlp-file"],
        [".jpb", "application/octet-stream"],
        [".jpe", "image/jpeg"],
        [".jpeg", "image/jpeg"],
        [".jpg", "image/jpeg"],
        [".js", "application/x-javascript"],
        [".json", "application/json"],
        [".jsx", "text/jscript"],
        [".jsxbin", "text/plain"],
        [".latex", "application/x-latex"],
        [".library-ms", "application/windows-library+xml"],
        [".lit", "application/x-ms-reader"],
        [".loadtest", "application/xml"],
        [".lpk", "application/octet-stream"],
        [".lsf", "video/x-la-asf"],
        [".lst", "text/plain"],
        [".lsx", "video/x-la-asf"],
        [".lzh", "application/octet-stream"],
        [".m13", "application/x-msmediaview"],
        [".m14", "application/x-msmediaview"],
        [".m1v", "video/mpeg"],
        [".m2t", "video/vnd.dlna.mpeg-tts"],
        [".m2ts", "video/vnd.dlna.mpeg-tts"],
        [".m2v", "video/mpeg"],
        [".m3u", "audio/x-mpegurl"],
        [".m3u8", "audio/x-mpegurl"],
        [".m4a", "audio/m4a"],
        [".m4b", "audio/m4b"],
        [".m4p", "audio/m4p"],
        [".m4r", "audio/x-m4r"],
        [".m4v", "video/x-m4v"],
        [".mac", "image/x-macpaint"],
        [".mak", "text/plain"],
        [".man", "application/x-troff-man"],
        [".manifest", "application/x-ms-manifest"],
        [".map", "text/plain"],
        [".master", "application/xml"],
        [".mda", "application/msaccess"],
        [".mdb", "application/x-msaccess"],
        [".mde", "application/msaccess"],
        [".mdp", "application/octet-stream"],
        [".me", "application/x-troff-me"],
        [".mfp", "application/x-shockwave-flash"],
        [".mht", "message/rfc822"],
        [".mhtml", "message/rfc822"],
        [".mid", "audio/mid"],
        [".midi", "audio/mid"],
        [".mix", "application/octet-stream"],
        [".mk", "text/plain"],
        [".mmf", "application/x-smaf"],
        [".mno", "text/xml"],
        [".mny", "application/x-msmoney"],
        [".mod", "video/mpeg"],
        [".mov", "video/quicktime"],
        [".movie", "video/x-sgi-movie"],
        [".mp2", "video/mpeg"],
        [".mp2v", "video/mpeg"],
        [".mp3", "audio/mpeg"],
        [".mp4", "video/mp4"],
        [".mp4v", "video/mp4"],
        [".mpa", "video/mpeg"],
        [".mpe", "video/mpeg"],
        [".mpeg", "video/mpeg"],
        [".mpf", "application/vnd.ms-mediapackage"],
        [".mpg", "video/mpeg"],
        [".mpp", "application/vnd.ms-project"],
        [".mpv2", "video/mpeg"],
        [".mqv", "video/quicktime"],
        [".ms", "application/x-troff-ms"],
        [".msi", "application/octet-stream"],
        [".mso", "application/octet-stream"],
        [".mts", "video/vnd.dlna.mpeg-tts"],
        [".mtx", "application/xml"],
        [".mvb", "application/x-msmediaview"],
        [".mvc", "application/x-miva-compiled"],
        [".mxp", "application/x-mmxp"],
        [".nc", "application/x-netcdf"],
        [".nsc", "video/x-ms-asf"],
        [".nws", "message/rfc822"],
        [".ocx", "application/octet-stream"],
        [".oda", "application/oda"],
        [".odc", "text/x-ms-odc"],
        [".odh", "text/plain"],
        [".odl", "text/plain"],
        [".odp", "application/vnd.oasis.opendocument.presentation"],
        [".ods", "application/oleobject"],
        [".odt", "application/vnd.oasis.opendocument.text"],
        [".one", "application/onenote"],
        [".onea", "application/onenote"],
        [".onepkg", "application/onenote"],
        [".onetmp", "application/onenote"],
        [".onetoc", "application/onenote"],
        [".onetoc2", "application/onenote"],
        [".orderedtest", "application/xml"],
        [".osdx", "application/opensearchdescription+xml"],
        [".p10", "application/pkcs10"],
        [".p12", "application/x-pkcs12"],
        [".p7b", "application/x-pkcs7-certificates"],
        [".p7c", "application/pkcs7-mime"],
        [".p7m", "application/pkcs7-mime"],
        [".p7r", "application/x-pkcs7-certreqresp"],
        [".p7s", "application/pkcs7-signature"],
        [".pbm", "image/x-portable-bitmap"],
        [".pcast", "application/x-podcast"],
        [".pct", "image/pict"],
        [".pcx", "application/octet-stream"],
        [".pcz", "application/octet-stream"],
        [".pdf", "application/pdf"],
        [".pfb", "application/octet-stream"],
        [".pfm", "application/octet-stream"],
        [".pfx", "application/x-pkcs12"],
        [".pgm", "image/x-portable-graymap"],
        [".pic", "image/pict"],
        [".pict", "image/pict"],
        [".pkgdef", "text/plain"],
        [".pkgundef", "text/plain"],
        [".pko", "application/vnd.ms-pki.pko"],
        [".pls", "audio/scpls"],
        [".pma", "application/x-perfmon"],
        [".pmc", "application/x-perfmon"],
        [".pml", "application/x-perfmon"],
        [".pmr", "application/x-perfmon"],
        [".pmw", "application/x-perfmon"],
        [".png", "image/png"],
        [".pnm", "image/x-portable-anymap"],
        [".pnt", "image/x-macpaint"],
        [".pntg", "image/x-macpaint"],
        [".pnz", "image/png"],
        [".pot", "application/vnd.ms-powerpoint"],
        [".potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"],
        [".potx", "application/vnd.openxmlformats-officedocument.presentationml.template"],
        [".ppa", "application/vnd.ms-powerpoint"],
        [".ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"],
        [".ppm", "image/x-portable-pixmap"],
        [".pps", "application/vnd.ms-powerpoint"],
        [".ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"],
        [".ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"],
        [".ppt", "application/vnd.ms-powerpoint"],
        [".pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"],
        [".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"],
        [".prf", "application/pics-rules"],
        [".prm", "application/octet-stream"],
        [".prx", "application/octet-stream"],
        [".ps", "application/postscript"],
        [".psc1", "application/PowerShell"],
        [".psd", "application/octet-stream"],
        [".psess", "application/xml"],
        [".psm", "application/octet-stream"],
        [".psp", "application/octet-stream"],
        [".pub", "application/x-mspublisher"],
        [".pwz", "application/vnd.ms-powerpoint"],
        [".qht", "text/x-html-insertion"],
        [".qhtm", "text/x-html-insertion"],
        [".qt", "video/quicktime"],
        [".qti", "image/x-quicktime"],
        [".qtif", "image/x-quicktime"],
        [".qtl", "application/x-quicktimeplayer"],
        [".qxd", "application/octet-stream"],
        [".ra", "audio/x-pn-realaudio"],
        [".ram", "audio/x-pn-realaudio"],
        [".rar", "application/octet-stream"],
        [".ras", "image/x-cmu-raster"],
        [".rat", "application/rat-file"],
        [".rc", "text/plain"],
        [".rc2", "text/plain"],
        [".rct", "text/plain"],
        [".rdlc", "application/xml"],
        [".resx", "application/xml"],
        [".rf", "image/vnd.rn-realflash"],
        [".rgb", "image/x-rgb"],
        [".rgs", "text/plain"],
        [".rm", "application/vnd.rn-realmedia"],
        [".rmi", "audio/mid"],
        [".rmp", "application/vnd.rn-rn_music_package"],
        [".roff", "application/x-troff"],
        [".rpm", "audio/x-pn-realaudio-plugin"],
        [".rqy", "text/x-ms-rqy"],
        [".rtf", "application/rtf"],
        [".rtx", "text/richtext"],
        [".ruleset", "application/xml"],
        [".s", "text/plain"],
        [".safariextz", "application/x-safari-safariextz"],
        [".scd", "application/x-msschedule"],
        [".sct", "text/scriptlet"],
        [".sd2", "audio/x-sd2"],
        [".sdp", "application/sdp"],
        [".sea", "application/octet-stream"],
        [".searchConnector-ms", "application/windows-search-connector+xml"],
        [".setpay", "application/set-payment-initiation"],
        [".setreg", "application/set-registration-initiation"],
        [".settings", "application/xml"],
        [".sgimb", "application/x-sgimb"],
        [".sgml", "text/sgml"],
        [".sh", "application/x-sh"],
        [".shar", "application/x-shar"],
        [".shtml", "text/html"],
        [".sit", "application/x-stuffit"],
        [".sitemap", "application/xml"],
        [".skin", "application/xml"],
        [".sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"],
        [".sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"],
        [".slk", "application/vnd.ms-excel"],
        [".sln", "text/plain"],
        [".slupkg-ms", "application/x-ms-license"],
        [".smd", "audio/x-smd"],
        [".smi", "application/octet-stream"],
        [".smx", "audio/x-smd"],
        [".smz", "audio/x-smd"],
        [".snd", "audio/basic"],
        [".snippet", "application/xml"],
        [".snp", "application/octet-stream"],
        [".sol", "text/plain"],
        [".sor", "text/plain"],
        [".spc", "application/x-pkcs7-certificates"],
        [".spl", "application/futuresplash"],
        [".src", "application/x-wais-source"],
        [".srf", "text/plain"],
        [".SSISDeploymentManifest", "text/xml"],
        [".ssm", "application/streamingmedia"],
        [".sst", "application/vnd.ms-pki.certstore"],
        [".stl", "application/vnd.ms-pki.stl"],
        [".sv4cpio", "application/x-sv4cpio"],
        [".sv4crc", "application/x-sv4crc"],
        [".svc", "application/xml"],
        [".swf", "application/x-shockwave-flash"],
        [".t", "application/x-troff"],
        [".tar", "application/x-tar"],
        [".tcl", "application/x-tcl"],
        [".testrunconfig", "application/xml"],
        [".testsettings", "application/xml"],
        [".tex", "application/x-tex"],
        [".texi", "application/x-texinfo"],
        [".texinfo", "application/x-texinfo"],
        [".tgz", "application/x-compressed"],
        [".thmx", "application/vnd.ms-officetheme"],
        [".thn", "application/octet-stream"],
        [".tif", "image/tiff"],
        [".tiff", "image/tiff"],
        [".tlh", "text/plain"],
        [".tli", "text/plain"],
        [".toc", "application/octet-stream"],
        [".tr", "application/x-troff"],
        [".trm", "application/x-msterminal"],
        [".trx", "application/xml"],
        [".ts", "video/vnd.dlna.mpeg-tts"],
        [".tsv", "text/tab-separated-values"],
        [".ttf", "application/octet-stream"],
        [".tts", "video/vnd.dlna.mpeg-tts"],
        [".txt", "text/plain"],
        [".u32", "application/octet-stream"],
        [".uls", "text/iuls"],
        [".user", "text/plain"],
        [".ustar", "application/x-ustar"],
        [".vb", "text/plain"],
        [".vbdproj", "text/plain"],
        [".vbk", "video/mpeg"],
        [".vbproj", "text/plain"],
        [".vbs", "text/vbscript"],
        [".vcf", "text/x-vcard"],
        [".vcproj", "Application/xml"],
        [".vcs", "text/plain"],
        [".vcxproj", "Application/xml"],
        [".vddproj", "text/plain"],
        [".vdp", "text/plain"],
        [".vdproj", "text/plain"],
        [".vdx", "application/vnd.ms-visio.viewer"],
        [".vml", "text/xml"],
        [".vscontent", "application/xml"],
        [".vsct", "text/xml"],
        [".vsd", "application/vnd.visio"],
        [".vsi", "application/ms-vsi"],
        [".vsix", "application/vsix"],
        [".vsixlangpack", "text/xml"],
        [".vsixmanifest", "text/xml"],
        [".vsmdi", "application/xml"],
        [".vspscc", "text/plain"],
        [".vss", "application/vnd.visio"],
        [".vsscc", "text/plain"],
        [".vssettings", "text/xml"],
        [".vssscc", "text/plain"],
        [".vst", "application/vnd.visio"],
        [".vstemplate", "text/xml"],
        [".vsto", "application/x-ms-vsto"],
        [".vsw", "application/vnd.visio"],
        [".vsx", "application/vnd.visio"],
        [".vtx", "application/vnd.visio"],
        [".wav", "audio/wav"],
        [".wave", "audio/wav"],
        [".wax", "audio/x-ms-wax"],
        [".wbk", "application/msword"],
        [".wbmp", "image/vnd.wap.wbmp"],
        [".wcm", "application/vnd.ms-works"],
        [".wdb", "application/vnd.ms-works"],
        [".wdp", "image/vnd.ms-photo"],
        [".webarchive", "application/x-safari-webarchive"],
        [".webtest", "application/xml"],
        [".wiq", "application/xml"],
        [".wiz", "application/msword"],
        [".wks", "application/vnd.ms-works"],
        [".WLMP", "application/wlmoviemaker"],
        [".wlpginstall", "application/x-wlpg-detect"],
        [".wlpginstall3", "application/x-wlpg3-detect"],
        [".wm", "video/x-ms-wm"],
        [".wma", "audio/x-ms-wma"],
        [".wmd", "application/x-ms-wmd"],
        [".wmf", "application/x-msmetafile"],
        [".wml", "text/vnd.wap.wml"],
        [".wmlc", "application/vnd.wap.wmlc"],
        [".wmls", "text/vnd.wap.wmlscript"],
        [".wmlsc", "application/vnd.wap.wmlscriptc"],
        [".wmp", "video/x-ms-wmp"],
        [".wmv", "video/x-ms-wmv"],
        [".wmx", "video/x-ms-wmx"],
        [".wmz", "application/x-ms-wmz"],
        [".wpl", "application/vnd.ms-wpl"],
        [".wps", "application/vnd.ms-works"],
        [".wri", "application/x-mswrite"],
        [".wrl", "x-world/x-vrml"],
        [".wrz", "x-world/x-vrml"],
        [".wsc", "text/scriptlet"],
        [".wsdl", "text/xml"],
        [".wvx", "video/x-ms-wvx"],
        [".x", "application/directx"],
        [".xaf", "x-world/x-vrml"],
        [".xaml", "application/xaml+xml"],
        [".xap", "application/x-silverlight-app"],
        [".xbap", "application/x-ms-xbap"],
        [".xbm", "image/x-xbitmap"],
        [".xdr", "text/plain"],
        [".xht", "application/xhtml+xml"],
        [".xhtml", "application/xhtml+xml"],
        [".xla", "application/vnd.ms-excel"],
        [".xlam", "application/vnd.ms-excel.addin.macroEnabled.12"],
        [".xlc", "application/vnd.ms-excel"],
        [".xld", "application/vnd.ms-excel"],
        [".xlk", "application/vnd.ms-excel"],
        [".xll", "application/vnd.ms-excel"],
        [".xlm", "application/vnd.ms-excel"],
        [".xls", "application/vnd.ms-excel"],
        [".xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"],
        [".xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"],
        [".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
        [".xlt", "application/vnd.ms-excel"],
        [".xltm", "application/vnd.ms-excel.template.macroEnabled.12"],
        [".xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"],
        [".xlw", "application/vnd.ms-excel"],
        [".xml", "text/xml"],
        [".xmta", "application/xml"],
        [".xof", "x-world/x-vrml"],
        [".XOML", "text/plain"],
        [".xpm", "image/x-xpixmap"],
        [".xps", "application/vnd.ms-xpsdocument"],
        [".xrm-ms", "text/xml"],
        [".xsc", "application/xml"],
        [".xsd", "text/xml"],
        [".xsf", "text/xml"],
        [".xsl", "text/xml"],
        [".xslt", "text/xml"],
        [".xsn", "application/octet-stream"],
        [".xss", "application/xml"],
        [".xtp", "application/octet-stream"],
        [".xwd", "image/x-xwindowdump"],
        [".z", "application/x-compress"],
        [".zip", "application/x-zip-compressed"]
];

// ----------------------- End of Extensions to MIME --------- //

- আমি পিডিএফ ফাইল দিয়ে এটি চেষ্টা করছিলাম। ফাইল ডাউনলোড হচ্ছে তবে এটি সর্বদা দূষিত। কোন পরামর্শ? আপনাকে ধন্যবাদ
শ্রীবতস কুলকার্নি

2

আমার জন্য এটি ক্রোম ভি 72-এ পরীক্ষিত ঠিকঠাক কাজ করছে

function down_file(url,name){
var a = $("<a>")
    .attr("href", url)
    .attr("download", name)
    .appendTo("body");
a[0].click();
a.remove();
}

down_file('https://www.useotools.com/uploads/nulogo[1].png','logo.png')

এটি ঠিক একই পদ্ধতি যা কল্পনা করার আগে ব্রেকার এর উত্তর বছরগুলিতে দেখানো হয়েছিল, তবে jQuery প্রয়োজনের অতিরিক্ত ক্ষতি সহ।
মার্ক আমেরিকা

1

ফর্ম ট্যাগ ব্যবহার করে আমার ভাল ফলাফল হয়েছে কারণ এটি সর্বত্র কাজ করে এবং আপনাকে সার্ভারে অস্থায়ীভাবে ফাইল তৈরি করতে হবে না। পদ্ধতিটি এইভাবে কাজ করে।

ক্লায়েন্ট সাইডে (পৃষ্ঠার এইচটিএমএল) আপনি এটির মতো একটি অদৃশ্য ফর্ম তৈরি করেন

<form method="POST" action="/download.php" target="_blank" id="downloadForm">
    <input type="hidden" name="data" id="csv">
</form>

তারপরে আপনি এই জাভাস্ক্রিপ্ট কোডটি আপনার বোতামে যুক্ত করুন:

$('#button').click(function() {
     $('#csv').val('---your data---');
     $('#downloadForm').submit();
}

সার্ভার-সাইডে আপনার নিম্নলিখিত পিএইচপি কোডটি রয়েছে download.php:

<?php
header('Content-Type: text/csv');
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=out.csv');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . strlen($data));

echo $_REQUEST['data'];
exit();

আপনি এমনকি এইভাবে আপনার ডেটার জিপ ফাইলগুলি তৈরি করতে পারেন:

<?php

$file = tempnam("tmp", "zip");

$zip = new ZipArchive();
$zip->open($file, ZipArchive::OVERWRITE);
$zip->addFromString('test.csv', $_REQUEST['data']);
$zip->close();

header('Content-Type: application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="file.zip"');
readfile($file);
unlink($file); 

সবচেয়ে ভাল অংশটি হ'ল ফ্লাইতে সবকিছু তৈরি এবং ধ্বংস হওয়ার কারণে এটি আপনার সার্ভারে কোনও অবশিষ্ট ফাইল ছেড়ে যায় না!


0

30 ডিসেম্বর '13 এ হিটেশ জমা দেওয়া উত্তরটি আসলে কাজ করে। এটির জন্য সামান্য সমন্বয় প্রয়োজন:

পিএইচপি ফাইল নিজে কল করতে পারে। অন্য কথায়, কেবল saveAs.php নামে একটি ফাইল তৈরি করুন এবং এতে এই কোডটি রেখে দিন ...

        <a href="saveAs.php?file_source=YourDataFile.pdf">Download pdf here</a>

    <?php
        if (isset($_GET['file_source'])) {
            $fullPath = $_GET['file_source'];
            if($fullPath) {
                $fsize = filesize($fullPath);
                $path_parts = pathinfo($fullPath);
                $ext = strtolower($path_parts["extension"]);
                switch ($ext) {
                    case "pdf":
                    header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
                    header("Content-type: application/pdf"); // add here more headers for diff. extensions
                    break;
                    default;
                    header("Content-type: application/octet-stream");
                    header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
                }
                if($fsize) {//checking if file size exist
                  header("Content-length: $fsize");
                }
                readfile($fullPath);
                exit;
            }
        }
    ?>

0

এই ফাংশনগুলি ব্যবহার করা হয় stacktrace.js তে :

/**
 * Try XHR methods in order and store XHR factory.
 *
 * @return <Function> XHR function or equivalent
 */
var createXMLHTTPObject = function() {
    var xmlhttp, XMLHttpFactories = [
        function() {
            return new XMLHttpRequest();
        }, function() {
            return new ActiveXObject('Msxml2.XMLHTTP');
        }, function() {
            return new ActiveXObject('Msxml3.XMLHTTP');
        }, function() {
            return new ActiveXObject('Microsoft.XMLHTTP');
        }
    ];
    for (var i = 0; i < XMLHttpFactories.length; i++) {
        try {
            xmlhttp = XMLHttpFactories[i]();
            // Use memoization to cache the factory
            createXMLHTTPObject = XMLHttpFactories[i];
            return xmlhttp;
        } catch (e) {
        }
    }
}

/**
 * @return the text from a given URL
 */
function ajax(url) {
    var req = createXMLHTTPObject();
    if (req) {
        try {
            req.open('GET', url, false);
            req.send(null);
            return req.responseText;
        } catch (e) {
        }
    }
    return '';
}

এটি ... কেবল এক্সএইচআরের পক্ষে বলে মনে হচ্ছে, ডাউনলোড ফাইল নয়? আমি এখানে প্রাসঙ্গিকতা দেখছি না।
মার্ক আমেরিকা

0

আমি আপনাকে মোডাউনড ইভেন্টটি ব্যবহার করার পরামর্শ দিচ্ছি, যাকে ক্লিক ইভেন্টের আগে বলা হয়। এইভাবে, ব্রাউজারটি প্রাকৃতিকভাবে ক্লিক ইভেন্টটি পরিচালনা করে যা কোনও কোড অদ্ভুততা এড়ায়:

(function ($) {


    // with this solution, the browser handles the download link naturally (tested in chrome and firefox)
    $(document).ready(function () {

        var url = '/private/downloads/myfile123.pdf';
        $("a#someID").on('mousedown', function () {
            $(this).attr("href", url);
        });

    });
})(jQuery);

0

কর্বাচো থেকে অসাধারণ সমাধান, আমি কেবল ওভার থেকে মুক্তি পেতে অভিযোজন করেছি

function downloadURL(url) {
    if( $('#idown').length ){
        $('#idown').attr('src',url);
    }else{
        $('<iframe>', { id:'idown', src:url }).hide().appendTo('body');
    }
}

0

ফায়ারফক্স এবং ক্রোম পরীক্ষিত:

var link = document.createElement('a');
link.download = 'fileName.ext'
link.href = 'http://down.serv/file.ext';

// Because firefox not executing the .click() well
// We need to create mouse event initialization.
var clickEvent = document.createEvent("MouseEvent");
clickEvent.initEvent("click", true, true);

link.dispatchEvent(clickEvent);

এটি প্রকৃতপক্ষে ফায়ারফক্সের "ক্রোম" উপায় সমাধান (এটি আমি অন্যান্য ব্রাউজারগুলিতে পরীক্ষা করি না, তাই দয়া করে সংকলনের বিষয়ে মন্তব্য দিন)


0

অনেকগুলি ছোট ছোট জিনিস রয়েছে যা কোনও ফাইল ডাউনলোড করার চেষ্টা করার সময় ঘটতে পারে। একা ব্রাউজারগুলির মধ্যে অসঙ্গতি একটি দুঃস্বপ্ন। আমি এই দুর্দান্ত ছোট গ্রন্থাগারটি ব্যবহার করে শেষ করেছি। https://github.com/rndme/download

এটি সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এটি কেবল ইউআরএলগুলির জন্য নয় তবে আপনি যে ক্লায়েন্টের সাইড ডেটা ডাউনলোড করতে চান তার জন্য নমনীয়।

  1. পাঠ্য স্ট্রিং
  2. পাঠ্য ডেটা URL
  3. পাঠ্য ব্লব
  4. পাঠ্য অ্যারে
  5. এইচটিএমএল স্ট্রিং
  6. এইচটিএমএল ব্লব
  7. এজ্যাক্স কলব্যাক
  8. বাইনারি ফাইল

-1

অ্যাঙ্কর ট্যাগ এবং পিএইচপি ব্যবহার করে এটি করা যেতে পারে, এই উত্তরটি দেখুন

JQuery Ajax পিডিএফ ফাইল ডাউনলোডের জন্য কল

HTML
    <a href="www.example.com/download_file.php?file_source=example.pdf">Download pdf here</a>

PHP
<?php
$fullPath = $_GET['fileSource'];
if($fullPath) {
    $fsize = filesize($fullPath);
    $path_parts = pathinfo($fullPath);
    $ext = strtolower($path_parts["extension"]);
    switch ($ext) {
        case "pdf":
        header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
        header("Content-type: application/pdf"); // add here more headers for diff. extensions
        break;
        default;
        header("Content-type: application/octet-stream");
        header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
    }
    if($fsize) {//checking if file size exist
      header("Content-length: $fsize");
    }
    readfile($fullPath);
    exit;
}
?>

আমি ফাইল আকারের জন্য যাচাই করছি কারণ আপনি যদি সিডিএন ক্লাউডফ্রন্ট থেকে পিডিএফ লোড করেন তবে আপনি নথির আকার পাবেন না যা ডকুমেন্টকে 0 কেবিতে ডাউনলোড করতে বাধ্য করে, এটি এড়াতে আমি এই শর্তটি পরীক্ষা করছি

 if($fsize) {//checking if file size exist
      header("Content-length: $fsize");
    }

-1

আমি জানি আমি পার্টির জন্য দেরি করেছি, তবে আমি আমার সমাধানটি ভাগ করতে চাই যা উপরের চিত্রের ব্রেকারের সমাধানটির ভিন্নতা। আমি তার সমাধানটি ব্যবহার করার চেষ্টা করেছি, কারণ তার সমাধানটি আমার কাছে সবচেয়ে সহজ এবং সহজ বলে মনে হচ্ছে। তবে অন্যদের মতো, এটি কিছু ব্রাউজারের জন্য কাজ করে না, তাই আমি jquery ব্যবহার করে এটিতে কিছুটা প্রকার রেখেছি।

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

function download(url) {
  var link = document.createElement("a");
  $(link).click(function(e) {
    e.preventDefault();
    window.location.href = url;
  });
  $(link).click();
}

এই পুরো ফাংশনটি বডিটি করার একটি মাত্র জটিল পদ্ধতি window.location.href = url। আপনার তৈরি লিঙ্কটি কোনও কিছুর জন্য ব্যবহৃত হয় না।
মার্ক আমেরিকা

-1

দ্রষ্টব্য: সমস্ত ব্রাউজারে সমর্থিত নয়।

আমি প্রথম থেকেই href অ্যাট্রিবিউটে ফাইল url সেট না করে jquery ব্যবহার করে একটি ফাইল ডাউনলোড করার উপায় খুঁজছিলাম a

jQuery('<a/>', {
    id: 'downloadFile',
    href: 'http://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png',
    style: 'display:hidden;',
    download: ''
}).appendTo('body');

$("#downloadFile")[0].click();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


-1

আমি জ্যাকুয়ারি ছাড়াই @ রাকালুফের সমাধানটি ব্যবহার করি (কারণ আপনার এখানে এটির দরকার নেই )। ধারনাটির জন্য তোমাকে ধন্যবাদ! এখানে একটি ভ্যানিলাজেএস ফর্ম-ভিত্তিক সমাধান:

const uri = 'https://upload.wikimedia.org/wikipedia/commons/b/bb/Test_ogg_mp3_48kbps.wav';
let form = document.createElement("form");
form.setAttribute('action', uri);
document.body.appendChild(form);
form.submit();
document.body.removeChild(document.body.lastElementChild);

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