JQuery ব্যবহার করে ফাইল ডাউনলোড করুন


113

আমি যখন কোনও লিঙ্কে ক্লিক করি তখন আমি কীভাবে কোনও ডাউনলোডের জন্য প্রম্পট করতে পারি।

উদাহরণস্বরূপ, পরিবর্তে:

<a href="uploads/file.doc">Download Here</a>

আমি ব্যবহার করতে পারি:

<a href="#">Download Here</a>

 $('a').click... //Some jquery to download the file

এইভাবে, গুগল আমার এইচআরএফ এবং ব্যক্তিগত ফাইলগুলি সূচী করে না।

এটি jQuery দিয়ে করা যেতে পারে, যদি তাই হয়, কিভাবে? অথবা এটি পিএইচপি বা এর পরিবর্তে কিছু করা উচিত?


উত্তর:


165

আমি আরও সুদৃfully়ভাবে হ্রাসকারী সমাধান হিসাবে এটি ব্যবহার করতে পরামর্শ দেব preventDefault:

$('a').click(function(e) {
    e.preventDefault();  //stop the browser from following
    window.location.href = 'uploads/file.doc';
});

<a href="no-script.html">Download now!</a>

জাভাস্ক্রিপ্ট না থাকলেও, কমপক্ষে এভাবে ব্যবহারকারী কিছু প্রতিক্রিয়া পাবেন।


20
jQuery এর উত্তর।
এস্তেবান কাবার

ধন্যবাদ, আমি এটিই খুঁজছিলাম আমি সাধারণত "প্রতিরোধের ডিফল্ট" ব্যবহার করি, কেবল অলস হওয়ার কারণে এটি উপরে রেখে দিয়েছি। ;-)
ডডিনাস 21

2
দুর্দান্ত কাজ করে তবে কিছু MIME টাইপ ত্রুটি পান। এগুলি পাশ করার কোনও উপায় থাকলে কৌতূহল?
নাথান হ্যাঙ্গেন

2
আপনি মাইমে টাইপ সতর্কতা সমাধান করেছেন? আমি পেয়েছি "রিসোর্স ডকুমেন্ট হিসাবে ব্যাখ্যা করা হয়েছে তবে এমআইএমআই টাইপের সাথে স্থানান্তরিত হয়েছে ..." অনেক ধন্যবাদ।
ব্যবহারকারী 1824269

22

আপনি যদি নির্দিষ্ট ফাইলগুলিকে সূচী করতে অনুসন্ধান ইঞ্জিনগুলি না চান তবে আপনি ওয়েব মাকড়সাগুলিকে আপনার ওয়েবসাইটের কিছু অংশ অ্যাক্সেস না করতে বলতে রোবট.টেক্সট ব্যবহার করতে পারেন ।

আপনি যদি কেবল জাভাস্ক্রিপ্টের উপর নির্ভর করেন তবে কিছু ব্যবহারকারী যারা এটি ছাড়া ব্রাউজ করেন তারা আপনার লিঙ্কগুলিতে ক্লিক করতে পারবেন না।


1
'রোবটস টেক্সট' সম্পর্কে জেনে রাখা ভাল। ধন্যবাদ.
ডোডিনাস

@ রব, আপনার যদি ইউআরএলগুলি "ব্যক্তিগত" হওয়ার প্রয়োজন হয় robots.txtতবে সাহায্য করবে না কারণ এটি ব্রাউজারের ইতিহাস এবং মধ্যস্থতাকারী সার্ভারগুলিতে এখনও সংরক্ষণ করা হবে।
পেসিয়ার

3
6 বছর পরে: জাভাস্ক্রিপ্ট ছাড়া ব্রাউজিং? - ঠিক আছে, আপনি পরিবর্তে হাঁটার জন্য যেতে পারেন।
low_rents 9

প্রায় 10 বছর পরে: একই! বা?
toing_toing

18

এখানে একটি দুর্দান্ত নিবন্ধ যা অনুসন্ধান ইঞ্জিনগুলি থেকে ফাইলগুলি লুকানোর অনেকগুলি উপায় দেখায়:

http://antezeta.com/news/avoid-search-engine-indexing

জাভাস্ক্রিপ্ট কোনও পৃষ্ঠা সূচি না করাই ভাল উপায় নয়; এটি ব্যবহারকারীদের আপনার ফাইলগুলিতে সরাসরি লিঙ্ক করা থেকে বিরত রাখবে না (এবং এটি ক্রলারগুলির সাথে প্রকাশ করে), এবং রব যেমন উল্লেখ করেছে, সমস্ত ব্যবহারকারীর পক্ষে কাজ করবে না।
একটি সহজ ফিক্সটি হ'ল rel="nofollow"বৈশিষ্ট্যটি যুক্ত করা, যদিও আবার এটি রোবটস.টেক্সট ছাড়া সম্পূর্ণ হয় না।

<a href="uploads/file.doc" rel="nofollow">Download Here</a>


12

হ্যাঁ, আপনি যে ফাইলটি ডাউনলোড করতে চান তার ইউআরএলটিতে উইন্ডো.লোকেশন.ইরেফ পরিবর্তন করতে হবে।

window.location.href = 'http://www.com/path/to/file';

ফাইল এক্সটেনশন .html হয় তবে ডাউনলোডের পরিবর্তে এটি এইচটিএমএল ফাইলটিতে পুনর্নির্দেশ হবে
কলিম নালব্যান্ড

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

কোনও ত্রুটি নেই, কেবল ডাউনলোড শুরু হচ্ছে না। আমি মনে করি উপাদান তৈরি করার সময় সেখানে কিছু পয়েন্ট আমি অনুপস্থিত।
shyammakwana.me

আপনার এইচটিএমএলটিতে যাচাই করুন যদি কোনও এলিমেন্ট <a> তৈরি হয়েছিল বা না এবং আপনার ফাইলের লিঙ্কটি যাচাই করে।
EL মিসাউই হবিব

দেহে একটি ট্যাগ ছিল in এবং ম্যানুয়াল ক্লিক করে এটি চিত্র ডাউনলোড করছে। তবে এখনই এটির দরকার নেই, আমি এই ভ্যানিলাজেএস সমাধানটি ব্যবহার করেছি।
shyammakwana.me

কাজ না করার কোনও কারণ নেই লিংকটি সঠিক। লিঙ্কটি সরাসরি
ব্রাউজে

$('blah').each(function(){ $('body').append('<a href="'+xxx+'" download="'+dynamicname+'" />'); }) $('a').trigger('click');আমি এটা ব্যবহার করেছি
shyammakwana.me


6

উল্লেখ করে window.location.href = 'uploads/file.doc';আপনি কোথায় আপনার ফাইলগুলি সঞ্চয় করবেন তা দেখান। আপনি অবশ্যই সঞ্চিত ফাইলগুলির জন্য প্রয়োজনীয় আচরণকে বাধ্য করার জন্য .htacess ব্যবহার করতে পারেন, তবে এটি সর্বদা হাতের নাও হতে পারে ....

একটি সার্ভার সাইড পিএইচপি-ফাইল তৈরি করা এবং এটিতে এই সামগ্রীটি রাখা ভাল better

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$_REQUEST['f']);
readfile('../some_folder/some_subfolder/'.$_REQUEST['f']); 
exit;

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

আপনি এই পিএইচপি-ফাইলটি মাধ্যমে খুলুন window.location.href = 'scripts/this_php_file.php?f=downloaded_file';


এই সমাধানটি আমাকে আমার সাইটে ডাউনলোডের সমস্যাগুলি সমাধান করতে সহায়তা করেছে, ধন্যবাদ!
ডেনিজ

3

লুকানো iframes সাহায্য করতে পারেন


var redemFrame = document.createElement ("iframe"); var src = "doDownload.php"; redeemFrame.setAttribute ( "SRC", SRC); redemFrame.setAttribute ("শৈলী", "প্রদর্শন: কিছুই নয়"); document.body.appendChild (redeemFrame);
দারথেরিজ

3

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

(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").on('mousedown', function () {
            $(this).attr("href", url);
        });

    });
})(jQuery);

0

ফর্মগুলি সাফ করতে jQuery ব্যবহার করার জন্য অনুরূপ পোস্টের জন্য এখানে দেখুন: jQuery সহ বহু-পর্যায়ের ফর্মটি পুনরায় সেট করা

আপনি এমন একটি সমস্যাও চালিয়ে যেতে পারেন যেখানে মানগুলি স্ট্রুট মান স্ট্যাক দ্বারা পুনরায় সজ্জিত করা হচ্ছে। অন্য কথায়, আপনি আপনার ফর্মটি জমা দিন, অ্যাকশন শ্রেণিতে যা কিছু করুন, তবে অ্যাকশন শ্রেণিতে সম্পর্কিত ক্ষেত্রের মানগুলি পরিষ্কার করবেন না। এই দৃশ্যে ফর্মটি আপনার পূর্বে জমা দেওয়া মানগুলি বজায় রাখতে প্রদর্শিত হবে appear আপনি যদি কোনও উপায়ে এগুলি চালিয়ে যান, কেবলমাত্র অবিরাম থাকার পরে এবং সফলতা ফিরে আসার আগে আপনার অ্যাকশন ক্লাসের প্রতিটি ক্ষেত্রের মানটি বাতিল করুন।

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