Tự động tải xuống pdf trong php

Đây là hướng dẫn ngắn về cách buộc tải xuống tệp PDF bằng PHP. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách buộc trình duyệt tải xuống tệp PDF dưới dạng tệp đính kèm thay vì hiển thị trực tiếp

Hãy xem đoạn script PHP sau

//The full or relative path to your PDF file.
$pdfFile = 'instructions.pdf';

//Set the Content-Type to application/pdf
header('Content-Type: application/pdf');

//Set the Content-Length header.
header('Content-Length: ' . filesize($pdfFile));

//Set the Content-Transfer-Encoding to "Binary"
header('Content-Transfer-Encoding: Binary');

//The filename that it should download as.
$downloadName = 'instructions.pdf';

//Set the Content-Disposition to attachment and specify
//the name of the file.
header('Content-Disposition: attachment; filename=' . $downloadName);

//Read the PDF file data and exit the script.
readfile($pdfFile);
exit;

Trong đoạn mã trên

  • Chúng tôi đã tham chiếu đường dẫn đến tệp PDF mà chúng tôi muốn tải xuống. Trong trường hợp này, tệp được đề cập là hướng dẫn. pdf và nó nằm trong cùng thư mục với tập lệnh PHP của chúng tôi. Điều quan trọng cần lưu ý là bạn cũng có thể sử dụng đường dẫn đầy đủ tới tệp PDF của mình nếu tệp nằm trong thư mục khác
  • Chúng tôi đã sử dụng chức năng tiêu đề của PHP để đặt phản hồi Kiểu nội dung thành “application/pdf“. Tiêu đề này cho trình duyệt biết loại dữ liệu mà nó mong đợi
  • Tiêu đề Content-Transfer-Encoding được đặt thành “Binary” vì chúng tôi muốn chuyển tệp ở định dạng nhị phân tự nhiên
  • Chúng tôi đã chỉ định tên tệp sẽ được sử dụng khi tệp được tải xuống. Đây là tên sẽ được hiển thị khi người dùng được nhắc tải xuống tệp. Lưu ý rằng tên này không nhất thiết phải giống với tên tệp gốc. Ví dụ. Bạn có thể thêm ngày hiện tại vào tên tệp nếu điều đó hợp lý
  • Sử dụng hàm kích thước tệp của PHP, chúng tôi có thể tính toán kích thước của tệp theo byte và đặt kích thước đó làm tiêu đề Độ dài nội dung
  • Tiêu đề Bố trí nội dung được đặt thành "tệp đính kèm". Do đó, trình duyệt của khách hàng sẽ biết rằng nó sẽ coi dữ liệu là tệp tải xuống
  • Cuối cùng, chúng tôi đã xuất dữ liệu của tệp PDF của mình bằng hàm readfile của PHP

Đó là nó. Khá đơn giản, phải không?

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách tải xuống một tệp trong PHP bằng cách sử dụng hàm readfile()

Giới thiệu về hàm readfile() trong PHP

Hàm readfile() đọc dữ liệu từ một tệp và ghi nó vào bộ đệm đầu ra

Đây là cú pháp của hàm readfile()

readfile ( string $filename , bool $use_include_path = false , resource $context = ? ) : int|false

Code language: PHP (php)

Hàm readfile() có các tham số sau

  • $filename là đường dẫn đến tệp
  • readfile ( string $filename , bool $use_include_path = false , resource $context = ? ) : int|false

    Code language: PHP (php)
    0 nếu được đặt thành

    readfile ( string $filename , bool $use_include_path = false , resource $context = ? ) : int|false

    Code language: PHP (php)
    1, chức năng sẽ tìm kiếm tệp trong đường dẫn bao gồm
  • $filename = 'readme.pdf'; if (file_exists($filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); exit; }

    Code language: HTML, XML (xml)
    0 chỉ định bối cảnh luồng

Hàm readfile() trả về số byte nếu nó đọc thành công dữ liệu từ tệp hoặc

$filename = 'readme.pdf'; if (file_exists($filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); exit; }

Code language: HTML, XML (xml)
2 nếu nó không đọc được

Ví dụ về tệp tải xuống PHP

Ví dụ sau đây cho biết cách tải xuống tệp

$filename = 'readme.pdf'; if (file_exists($filename)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filename)); readfile($filename); exit; }

Code language: HTML, XML (xml)
3 bằng cách sử dụng ví dụ về hàm readfile()