এইচটিএমএল-এ পিডিএফ-র জন্য পাঠ্য লিঙ্কটিতে পপআপ খোলা "এই রূপে সংরক্ষণ করুন ..." খুলতে বাধ্য করুন


173

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

 <head>
    <meta name="content-disposition" content="inline; filename=filename.pdf">
    ...

তবে এটি কাজ করে না: / যখন আমি নীচের মতো কোনও ফাইলের সাথে লিঙ্ক করি তখন এটি কেবল ফাইলের সাথে লিঙ্ক করে এবং ফাইলটি খোলার চেষ্টা করে।

    <a href="filename.pdf" title="Filie Name">File name</a>

আপডেট (নীচের উত্তর অনুযায়ী):

যেহেতু আমি দেখছি এর জন্য কোনও 100% নির্ভরযোগ্য ক্রস ব্রাউজার সমাধান নেই। সম্ভবত সর্বোত্তম উপায়টি নীচে তালিকাভুক্ত ওয়েব পরিষেবাগুলির একটি ব্যবহার করা এবং একটি ডাউনলোড লিঙ্ক দেওয়া ...


1
পিডিএফ ফাইলগুলির জন্য মাইমটাইপ পরিবেশন করবেন না।
ভূপস

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


অনুরূপ কিন্তু কম ফাইল টাইপ নির্দিষ্ট: stackoverflow.com/questions/1465573/...
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


267

17
এই মন্তব্যের সময়, downloadবৈশিষ্ট্যটি ক্রোম, ফায়ারফক্স এবং অপেরাতে সীমাবদ্ধ। এমনকি IE এবং সাফারির সাম্প্রতিক সংস্করণগুলিও এটি সমর্থন করে না। ভবিষ্যতের সহায়তার জন্য: caniuse.com/#feat=download চেক করুন !
সিগমোরাল

নেটবিন ত্রুটি পরীক্ষা করে এটি সম্পর্কে অভিযোগ করে তবে এটি ঠিকঠাক বলে মনে হচ্ছে। আপনি নতুন ফাইলটির জন্য প্রাথমিক নামটি নির্দিষ্ট করতে পারেন: ডাউনলোড = "myFile.txt"
ইয়াস্টার

1
এটি এই মন্তব্যটি লেখার সময় এজতে কাজ করে এবং পিডিএফ দর্শকের এজেজের খুব দুর্বল প্রয়াসে হাইপারলিংকৃত পিডিএফগুলি বন্ধ করার একমাত্র উপায় বলে মনে হয়।

এই মন্তব্যের সময়, আমি এটি ক্রোম, অপেরা, এজ, মজিলায় পরীক্ষা করেছি। সর্বশেষ। মজিলা বাদে সব নিয়ে কাজ করছে।
এসআই

7
এটি কেবল একই-উত্স লিঙ্কগুলির জন্য কাজ করে, যেমন ক্যানিউজ . com/#feat=download এ উল্লিখিত হয়েছে । যদি আপনার লিঙ্কগুলি ক্রস-অরিজিন হয় তবে আপনার একমাত্র বিকল্পটি (আপাতত) প্রতিক্রিয়া টাইপটিকে "অ্যাপ্লিকেশন / অক্টেট-স্ট্রিম" এ বাধ্য করা হবে, যতগুলি উত্তর উত্তর দেয়। যদি আপনার সার্ভারে অ্যাক্সেস না থাকে তবে আপনি এটির প্রক্সি করার চেষ্টা করতে পারেন এবং ম্যানুয়ালি প্রতিক্রিয়া শিরোনাম সেট করতে পারেন।
জিন-ব্যাপটিস্ট

80
<a href="file link" download target="_blank">Click here to download</a>

এটি আমার জন্য ফায়ারফক্স এবং ক্রোমে কাজ করে।


2
এটি ২০১৩ সালের আয়ুশ গুপ্তের কাছ থেকে যদিও বর্তমান শীর্ষ জবাবের মতো ঠিক একই। target="_blank"এটি অ-সমর্থনকারী ব্রাউজারগুলির জন্য কিছুটা ব্যবহারযোগ্য করে তুলতে পারে, যদিও (পিডিএফগুলি বর্তমান পৃষ্ঠার উপরের লেখার পরিবর্তে একটি নতুন উইন্ডো / ট্যাবে খুলবে)।
সিগমোরাল

3
আমার জন্য, শুধুমাত্র ডাউনলোডটি সঠিকভাবে ট্রিগার করতে ব্যর্থ হওয়ায় target="_blank"এটি প্রয়োজনীয় ছিল download(ক্রোম)
ক্যাসাফ

2
আপনি যদি গুনটিতে স্ট্রিং দেন তবে downloadএটি ফাইলের নাম হিসাবে ব্যবহৃত হবে। আমি এটি সর্বদা ব্যবহারকারী স্ক্রিপ্টগুলিতে ব্যবহার করছি।
দুর্বলস্পেস

34

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

আপনি যদি এখনও ব্রাউজারটিকে ফাইলটি ডাউনলোড করতে বাধ্য করতে চান তবে সরাসরি HTTP শিরোনাম সংশোধন করুন। এখানে একটি পিএইচপি কোড উদাহরণ রয়েছে:

$path = "path/to/file.pdf";
$filename = "file.pdf";
header('Content-Transfer-Encoding: binary');  // For Gecko browsers mainly
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($path)) . ' GMT');
header('Accept-Ranges: bytes');  // Allow support for download resume
header('Content-Length: ' . filesize($path));  // File size
header('Content-Encoding: none');
header('Content-Type: application/pdf');  // Change the mime type if the file is not PDF
header('Content-Disposition: attachment; filename=' . $filename);  // Make the browser display the Save As dialog
readfile($path);  // This is necessary in order to get it to actually download the file, otherwise it will be 0Kb

দ্রষ্টব্য যে এটি এইচটিটিপি প্রোটোকলের কেবলমাত্র একটি এক্সটেনশন; কিছু ব্রাউজারগুলি এটিকে যাইহোক উপেক্ষা করতে পারে।


4
বাস্তবে আমি বিশ্বাস করি এটি ব্যাপকভাবে প্রয়োগ করা হয়েছে।
ম্যাথু উইলসন

এটি সেরা সমাধান, ঝামেলা মুক্ত এবং কাজ করে। আপনি এই পদ্ধতিটি ব্যবহার করে যে কোনও ফাইল প্রকার সরাসরি ডাউনলোড করতে পারেন। +1
কাসাফ

3
সামগ্রী-স্থানান্তর-এনকোডিং HTTP তে বিদ্যমান নেই। সামগ্রী-এনকোডিং: কোনওটিই অকেজো।
জুলিয়ান রেসকে

আপনার উত্তরে একটি নোট দিন, যদি ফাইলটি বাহ্যিক সার্ভার / ডোমেন থেকে আসে, তবে এই উত্তরটি সমাধান নাও হতে পারে ...
টুডো

আমি যুক্ত করতে চাই যে ফাইলগুলি বড় হয়ে গেলে আমার কাছে এই জাতীয় কোডটি নির্দিষ্ট সার্ভারগুলিতে ব্যর্থ হয়েছিল (> ​​আমার ক্ষেত্রে 80 এমবি)। ব্যবহার করেও ob_end_flush()কোনও লাভ হয়নি।
হেন্ডরিক

22

আমার এই একই সমস্যা ছিল এবং এমন একটি সমাধান খুঁজে পেয়েছি যা এ পর্যন্ত দুর্দান্ত কাজ করেছে। আপনি নিম্নলিখিত .htaccessফাইলটি আপনার ফাইলে রেখেছেন :

<FilesMatch "\.(?i:pdf)$">
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</FilesMatch>

এটি ব্রাউজারে দেখানোর পরিবর্তে ডাউনলোড করার জন্য একটি ফাইল ফোর্স থেকে এসেছে ।


4
এটি ভালভাবে কাজ করেছে, যেহেতু ডাউনলোডের জন্য আমার একটি বিশেষ নথির ডিরেক্টরি ছিল। আমি টাইপগুলি যেমন রয়েছে তেমন থাকতে দেওয়ার জন্য আমি ফোর্সটাইপটি বাদ দিয়েছি। আমারও মামলা-সংবেদনশীলতার দরকার নেই; খনিটি ইতিমধ্যে কেস-সংবেদনশীল বলে মনে হচ্ছে। আমি পুরানো / নতুন অফিস এক্সটেনশনের জন্য <FilesMatch "\.(pdf|xlsx?|docx?)$">
alচ্ছিক

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

আপনি আপনার অ্যাপাচি.কনফ ফাইলটিতেও সেই অধিকারটি রাখতে পারেন, আমি আরও বেশি সংস্থান গ্রহণ করার কারণে .htaccess ব্যবহার করি না।
মাইকেল জ্বর

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

9

আমি ফায়ারফক্সের জন্য একটি খুব সহজ সমাধান খুঁজে পেয়েছি (কেবলমাত্র সরাসরি হ্রেফের চেয়ে আত্মীয়ের সাথে কাজ করে): যোগ করুন type="application/octet-stream":

<a href="./file.pdf" id='example' type="application/octet-stream">Example</a>

1
লিনাক্সের ক্রোম ওএসে মার্টিন ক্রোম এবং ফায়ারফক্স ফাইলটি কাজ করার জন্য স্থানীয় হওয়া দরকার। আমার href ক্লাউড স্টোরেজ একটি url ছিল।
ttfreeman

7

আপনার .htaccess ফাইলে এই লাইনটি যুক্ত করার চেষ্টা করুন।

AddType application/octet-stream .pdf

আমি আশা করি এটি ব্রাউজার স্বাধীন হওয়ায় এটি কাজ করবে।


কেন এটি নিম্নোক্ত করা হয়েছে তা জানতে আগ্রহী হব - এটি অন্যতম সহজ পদ্ধতি এবং কাজ: সিএসএস
নাথন হর্নবি

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

আমি এটিকে নিম্নমানের করছি কারণ এটি সমস্যার ভুল সমাধান। বিভিন্ন ধরণের সংস্থান নিয়ে গন্ডগোল করা খারাপ ধারণা।
ব্র্যাড

@ নাথান হর্নবি - আমি এটিকে হ্রাস করি নি, তবে এটি কোনও উইন্ডোজ দ্বারা পরিচালিত সাইটের জন্য কাজ করবে না, কারণ তারা .htaccess ব্যবহার করে না।
পোলোহোলসেট

আমি ডাউনভিট করি নি, তবে এই সমাধানটি প্রত্যয়টির সমস্ত ফাইল অন্ধভাবে প্রভাবিত করে। এটি নির্বিচারে এবং তাই সব ক্ষেত্রেই উপযুক্ত হবে না।
জেবিএইচ

6

সাধারণত এটি ঘটে থাকে, কারণ কিছু ব্রাউজার সেটিংস বা প্লাগইনগুলি সাধারণ ওয়েব পৃষ্ঠার মতো একই উইন্ডোতে পিডিএফ সরাসরি খোলায়।

নিম্নলিখিত আপনাকে সাহায্য করতে পারে। আমি কয়েক বছর আগে পিএইচপিতে এটি করেছি। তবে বর্তমানে আমি সেই প্ল্যাটফর্মটিতে কাজ করছি না।

<?php
    if (isset($_GET['file'])) {
        $file = $_GET['file'];
        if (file_exists($file) && is_readable($file) && preg_match('/\.pdf$/',$file)) {
            header('Content-type: application/pdf');
            header("Content-Disposition: attachment; filename=\"$file\"");
            readfile($file);
        }
    }
    else {
        header("HTTP/1.0 404 Not Found");
        echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>";
    }
?>

উপরের হিসাবে সংরক্ষণ করুন download.php

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

আপনি এটি এর মতো ব্যবহার করতে পারেন:

আপনার এইচটিএমএল ফাইলটিতে নিম্নলিখিত লিঙ্কটি যুক্ত করুন।

<a href="download.php?file=my_pdf_file.pdf">Download the cool PDF.</a>

থেকে রেফারেন্স: এই ব্লগ


7
মনোযোগ দিচ্ছে এমন যে কোনও ব্যক্তিকে আপনার সার্ভারে প্রতিটি ফাইল সরবরাহ করার পক্ষে এটি দুর্দান্ত উপায় বলে মনে হয়। download.php?file=database_password_file.phpউদাহরণ স্বরূপ.
পবার্নে

5

আপনার .htaccessফাইলটিতে কেবল নীচের কোডটি দিন :

AddType application/octet-stream .csv
AddType application/octet-stream .xls
AddType application/octet-stream .doc
AddType application/octet-stream .avi
AddType application/octet-stream .mpg
AddType application/octet-stream .mov
AddType application/octet-stream .pdf

অথবা আপনি জাভাস্ক্রিপ্ট দ্বারা কৌতুক করতে পারেন

element.setAttribute( 'download', whatever_string_you_want);

1
এই কি ওয়েব সার্ভারটি আপাচি নয় ?
পিটার মর্টেনসেন

5

আমি কেবল এটি ব্যবহার করেছি, তবে আমি জানি না এটি সমস্ত ব্রাউজারে কাজ করে কিনা।

এটি ফায়ারফক্সে কাজ করে:

<a href="myfile.pdf" download>Click to Download</a>

1
এটি পূর্ববর্তী উত্তরে প্রস্তাবিত এবং আরও পটভূমির তথ্য সহ প্রস্তাবিত ।
usr2564301

4

একটি সত্যিই সহজ উপায় বহিরাগত ডাউনলোডের সাইট ব্যবহার বা হেডার পরিবর্তন ইত্যাদি কেবল পিডিএফ ভিতরে এবং সরাসরি সংযুক্ত ZIP ফাইল সঙ্গে একটি জিপ ফাইল তৈরি করতে হয় ছাড়াই এই অর্জনের জন্য। এটি সর্বদা সেভ / ওপেন ডায়ালগটিকে ট্রিগার করবে এবং লোকেরা .zip এর সাথে যুক্ত প্রোগ্রামটি পিডিএফ উইন্ডোজগুলিতে ডাবল-ক্লিক করা এখনও সহজ।

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


31
ভয়াবহ ব্যবহারযোগ্যতা। অনেক শেষ ব্যবহারকারী একটি জিপ ফাইল দিয়ে কী করবেন তা জানতেন না।
কোডওয়ারিওর

1
কখনও কখনও সাধারণ দ্রাবকগুলি সর্বোত্তম সমাধান!
elrado

1
ভাল সমাধান নয়। ফায়ারফক্স এবং একটি জিপ ফাইল নিয়ে আমার ঠিক সমস্যা আছে। আমার কি করা উচিৎ? জিপ ফাইল? সেক্ষেত্রে এইচটিটিপি শিরোনাম সংশোধন করা সমাধান হতে পারে তবে এতে আমার অ্যাক্সেস নেই।
আরনাউড ওয়েল

2

সমস্ত ব্রাউজারগুলিতে "ডাউনলোড" অ্যাট্রিবিউট প্রয়োগ না করা পর্যন্ত একটি সার্ভার-সাইড সমাধান আরও সামঞ্জস্যপূর্ণ।

পাইথনের একটি উদাহরণ ফাইল স্টোরের জন্য কাস্টম এইচটিটিপি অনুরোধ হ্যান্ডলার হতে পারে। ফাইলের দোকানে নির্দেশিত লিঙ্কগুলি এই জাতীয়ভাবে তৈরি করা হয়:

http://www.myfilestore.com/filestore/13/130787e71/download_as/desiredName.pdf

কোডটি এখানে:

class HTTPFilestoreHandler(SimpleHTTPRequestHandler):

    def __init__(self, fs_path, *args):
        self.fs_path = fs_path                          # Filestore path
        SimpleHTTPRequestHandler.__init__(self, *args)

    def send_head(self):
        # Overwrite SimpleHTTPRequestHandler.send_head to force download name
        path = self.path
        get_index = (path == '/')
        self.log_message("path: %s" % path)
        if '/download_as/' in path:
            p_parts = path.split('/download_as/')
            assert len(p_parts) == 2, 'Bad download link:' + path
            path, download_as = p_parts
        path = self.translate_path(path )
        f = None
        if os.path.isdir(path):
            if not self.path.endswith('/'):
                # Redirect browser - doing basically what Apache does
                self.send_response(301)
                self.send_header("Location", self.path + "/")
                self.end_headers()
                return None
            else:
                return self.list_directory(path)
        ctype = self.guess_type(path)
        try:
            f = open(path, 'rb')
        except IOError:
            self.send_error(404, "File not found")
            return None
        self.send_response(200)
        self.send_header("Content-type", ctype)
        fs = os.fstat(f.fileno())
        self.send_header("Expires", '0')
        self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
        self.send_header("Cache-Control", 'must-revalidate, post-check=0, pre-check=0')
        self.send_header("Content-Transfer-Encoding", 'binary')
        if download_as:
            self.send_header("Content-Disposition", 'attachment; filename="%s"' % download_as)
        self.send_header("Content-Length", str(fs[6]))
        self.send_header("Connection", 'close')
        self.end_headers()
        return f


class HTTPFilestoreServer:

    def __init__(self, fs_path, server_address):
        def handler(*args):
            newHandler = HTTPFilestoreHandler(fs_path, *args)
            newHandler.protocol_version = "HTTP/1.0"
        self.server = BaseHTTPServer.HTTPServer(server_address, handler)

    def serve_forever(self, *args):
        self.server.serve_forever(*args)


def start_server(fs_path, ip_address, port):
    server_address = (ip_address, port)
    httpd = HTTPFilestoreServer(fs_path, server_address)

    sa = httpd.server.socket.getsockname()
    print "Serving HTTP on", sa[0], "port", sa[1], "..."
    httpd.serve_forever()

2

এটি করার একটি খুব সহজ উপায়, যদি আপনার পৃষ্ঠায় কোনও একক লিঙ্কের জন্য ডাউনলোডকে জোর করা প্রয়োজন হয় তবে হ'রেফ-লিঙ্কে এইচটিএমএল 5 ডাউনলোড-বৈশিষ্ট্যটি ব্যবহার করা।

দেখুন: http://davidwalsh.name/download-attribute

এটির সাহায্যে আপনি যে ফাইলটি ব্যবহারকারী ডাউনলোড করবেন সেটির পুনরায় নামকরণ করতে পারবেন এবং একই সাথে এটি ডাউনলোডকে জোর করে।

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

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


1

এটি পুরানো পোস্ট তবে এখানে জাভাস্ক্রিপ্টে আমার সমাধানটি কী jQuery লাইব্রেরি ব্যবহার করে।

<script>
(function($){
    var download = [];
    $('a.force-download, .force-download a').each(function(){
        // Collect info
        var $this = $(this),
            $href = $this.attr('href'),
            $split = $href.split('/'),
            $name = document.title.replace(/[\W_]/gi, '-').replace(/-{2,}/g, '-'); // get title and clean it for the URL

        // Get filename from URL
        if($split[($split.length-1)])
        {
            $tmp = $split[($split.length-1)];
            $tmp = $tmp.split('.');
            $name = $tmp[0].replace(/[\W_]/gi, '-').replace(/-{2,}/g, '-');
        }

        // If name already exists, put timestamp there
        if($.inArray($name, download) > -1)
        {
            $name = $name + '-' + Date.now().replace(/[\W]/gi, '-');
        }

        $(this).attr("download", $name);
        download.push($name);
    });
}(jQuery || window.jQuery))
</script>

force-downloadআপনার <a>ট্যাগের ভিতরে আপনাকে কেবল ক্লাস ব্যবহার করতে হবে এবং ডাউনলোড অটোমেটিক্যালিটি বাধ্য করবে। আপনি এটিকে পিতামাতার সাথেও যুক্ত করতে পারেন divএবং এর ভিতরে থাকা সমস্ত লিঙ্কগুলি পিকআপ করবেন।

উদাহরণ:

<a href="/some/good/url/Post-Injection_Post-Surgery_Instructions.pdf" class="force-download" target="_blank">Download PDF</a>

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


0

এইচটিএমএল কোডে ফাইলের নাম পরে আমি যুক্ত করব ?forcedownload=1

সংরক্ষণ বা ডাউনলোডের জন্য একটি ডায়লগ বাক্স ট্রিগার করার জন্য এটি আমার পক্ষে সহজতম উপায়।


0

আপনার যদি ব্রাউজারের মধ্যে এমন একটি প্লাগইন থাকে যা পিডিএফ ফাইলটি কীভাবে খুলতে হয় তা এটি সরাসরি খুলবে। চিত্র এবং এইচটিএমএল বিষয়বস্তুর ক্ষেত্রে পছন্দ করুন।

সুতরাং বিকল্প পদ্ধতির প্রতিক্রিয়াতে আপনার MIME প্রকারটি প্রেরণ নয়। এই ব্রাউজারটি কখনই জানতে পারবে না যে কোন প্লাগইনটি এটি খুলতে হবে। সুতরাং এটি আপনাকে একটি সেভ / ওপেন ডায়ালগ বক্স দেবে।


এটি অর্জন করা শক্ত কারণ এটি সার্ভার যা মাইম প্রকারটি প্রেরণ করে এবং সরাসরি কোনও পিডিএফ ফাইলে লিঙ্ক করার সময় আপনি শিরোনাম পরিবর্তন করতে পারবেন না।
কারেল পেট্রানেক

0

আমার কেবল একটি যুক্ত ফাইলের সাথে খুব অনুরূপ একটি সমস্যা ছিল যা একটি জিপ ফাইলের মধ্যে ফাইলগুলির ডাউনলোড লিঙ্ক তৈরি করতে আমার প্রয়োজন হয়েছিল।

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

সার্ভলেটটি ইনপুট হিসাবে জিপ ফাইলের পুরো পথের নাম, এবং জিপের ভিতরে থাকা ফাইলের নাম নেয় যা ডাউনলোড করা উচিত।

আমার জেএসপি ফাইলের ভিতরে আমার কাছে একটি টেবিল রয়েছে জিপের অভ্যন্তরে সমস্ত ফাইল প্রদর্শন করা লিঙ্কগুলির সাথে: onclick='download?zip=<%=zip%>&csv=<%=csv%>'

সার্ভলেট কোডটি ডাউনলোড.জভাতে রয়েছে:

package myServlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.zip.*;
import java.util.*;

// Extend HttpServlet class
public class download extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        PrintWriter out = response.getWriter(); // now we can write to the client

        String filename = request.getParameter("csv");
        String zipfile = request.getParameter("zip");

        String aLine = "";

        response.setContentType("application/x-download");
        response.setHeader( "Content-Disposition", "attachment; filename=" + filename); // Force 'save-as'
        ZipFile zip = new ZipFile(zipfile);
        for (Enumeration e = zip.entries(); e.hasMoreElements();) {
            ZipEntry entry = (ZipEntry) e.nextElement();
            if(entry.toString().equals(filename)) {
                InputStream is = zip.getInputStream(entry);
                BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"), 65536);
                while ((aLine = br.readLine()) != null) {
                    out.println(aLine);
                }
                is.close();
                break;
            }
        }
    }
}

টমক্যাটে সংকলন করার জন্য আপনার টমকাট \ lib \ servlet-api.jar বা গ্লাস ফিশে অন্তর্ভুক্ত করতে ক্লাসপথ দরকার: গ্লাস ফিশ \ lib \ j2ee.jar

তবে উভয়েই দুজনেই কাজ করবে। আপনার নিজের সার্লেটটি সেট করতে হবে web.xml


0

প্রতিক্রিয়া শিরোনাম যুক্ত করুন সামগ্রী-স্বভাব: সংযুক্তি; ফাইল নাম পরে। মেটা কনটেন্ট-ডিসপজিশন সরান; ইনলাইন; যা একই উইন্ডোতে নথিটি খুলবে

জাভাতে এটি সেট করা আছে

response.setHeader("Content-Disposition", "attachment;filename=test.jpg");

-2

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

এটি আমার পক্ষে কাজ করে না, তাই যা কাজ করেছিল তা ছিল:

মেনু সরঞ্জামগুলি * → অ্যাড-অনসঅ্যাডোব অ্যাক্রোব্যাট (ফায়ারফক্সের জন্য অ্যাডোব পিডিএফ প্লাগইন) IS অক্ষম। এখন আমি ই-বুক ডাউনলোড করতে সক্ষম!


2
প্রশ্ন পড়েছ? এটি কোনও ক্রস ব্রাউজারের উত্তর নয়
চিহ্নিত করুন

1
@ চিহ্নিত করুন এটি কোনও ওয়েবসাইটের মালিককে নয়, পিডিএফগুলির জোরপূর্বক ডাউনলোডগুলি প্রম্পট করার জন্য নির্দেশাবলীও রয়েছে।
নাথান হর্নবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.