পিএইচপি: সরাসরি লিঙ্ক সরবরাহ না করে ডাউনলোডের জন্য একটি ফাইল পরিবেশন করুন


12

আমি ডাউনলোডের জন্য চালান পরিবেশন করতে চাই। বর্তমানে আমি একটি সাধারণ নম্বর স্কিম ব্যবহার করছি (চালান -01.pdf, চালান -02.pdf, এবং আরও)। আমি জানি যে আমি তথ্যগুলি অস্পষ্ট করার পরিবর্তে হ্যাশগুলি ব্যবহার করতে পারি।

পিএইচপি ব্যবহার এবং চালকদের সরাসরি ব্যবহারকারীর কাছে সরাসরি নির্দেশ না দিয়ে কী ব্যবহার করা সম্ভব?


উত্তর:


26

এমনকি php.net এ এর একটি উদাহরণও রয়েছে

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?> 

বা এটি দিয়ে কিছুটা প্রসারিত করুন

<?php
if ( can_this_file_be_downloaded() ) {
  header('Content-type: application/pdf');
  header('Content-Disposition: attachment; filename="invoice.pdf"');
  readfile("{$_GET['filename']}.pdf");
} else {
  die("None shall pass");
}
?>

5

স্যামের উত্তর আছে। তাদের .htaccess সহ একটি ডিরেক্টরিতে রেখে দিন:

Authname Private
AuthType basic
require user noadmittance

যদি তারা ইউআরএল জানেন তবে এটি সরাসরি অ্যাক্সেসের বাইরে রাখবে। আপনি এখনও এটি আপনার পিএইচপি স্ক্রিপ্ট থেকে পঠন ফাইল () দিয়ে পড়তে পারেন।


1
আপনার পরামর্শের কারণে আমার কেবল একটি ধারণা ছিল: আমি সমস্ত ইনভয়েস www ফোল্ডারের বাইরে রেখেছি। :-) আবার ধন্যবাদ!
ফ্রাঙ্ক ভিলিয়া

1
হ্যা আরও ভাল!
চার্লি

3

আমি এই দুর্দান্ত গাইডটি পেয়েছি: পিএইচপি-র মাধ্যমে কীভাবে বড় ফাইলগুলি পরিবেশন করা যায়

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

হালনাগাদ:

লাইটটিপিডিতে এই বৈশিষ্ট্য রয়েছে এবং অ্যাপাচি 2 এর জন্য একটি Mod_xsendfile রয়েছে।

( এনগিনএক্স ডকুমেন্টেশন থেকে উদ্ধৃত )


0

স্বয়ংক্রিয় এমআইএমআই টাইপ সনাক্তকরণ সহ আমার ফাংশন:

function serve_file($filepath, $new_filename=null) {
    $filename = basename($filepath);
    if (!$new_filename) {
        $new_filename = $filename;
    }
    $mime_type = mime_content_type($filepath);
    header('Content-type: '.$mime_type);
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    readfile($filepath);
}

ব্যবহার:

serve_file("/no_apache/invoice27342.pdf");

পিএইচপি (কোনও প্রতিধ্বনি) দিয়ে অন্য কিছু না পাঠাতে মনোযোগ দিন।

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