Tải xuống tệp PDF từ URL trong PHP

Nếu bạn muốn tạo các loại tệp hoặc hình ảnh khác nhau, tải tệp trực tiếp vào ổ đĩa của người dùng bằng PHP, bạn có thể chạy hàm readfile()

Hãy xem cách thực hiện trong ví dụ tạo thư viện hình ảnh, điều này sẽ giúp người dùng tải xuống các tệp hình ảnh chỉ bằng một cú nhấp chuột

Trong ví dụ dưới đây, một bộ sưu tập hình ảnh. php được tạo và một mã được đặt bên trong nó

Vì vậy, trong ví dụ trên, liên kết tải xuống trỏ đến tệp tải xuống. tập tin php. Đến lượt nó, URL bao gồm tên tệp hình ảnh, giống như một chuỗi truy vấn. Ngoài ra, bạn có thể nhận thấy rằng hàm urlencode() được áp dụng để mã hóa tên tệp hình ảnh theo cách mà chúng có thể được chuyển một cách an toàn giống như một tham số URL. Lý do là tên tệp có thể bao gồm các ký tự URL không an toàn. Toàn bộ mã tải xuống. php, buộc tải xuống hình ảnh trông như sau

Các định dạng tệp khác như pdf, doc, v.v. cũng có thể được tải xuống theo cách đã trình bày ở trên

Điều quan trọng cần lưu ý là trong ví dụ trên, biểu thức chính quy (dòng 8) không cho phép các tệp có tên bắt đầu hoặc kết thúc bằng dấu chấm (. ). Ví dụ: bạn có thể sử dụng tên tệp như sách. jpg hoặc Sách. jpg nhưng không thể sử dụng sách. jpg. ,. diều. jpg, v.v.

Trong ứng dụng web, nói chung, tệp được tải xuống từ cùng một máy chủ. Nhưng đôi khi tệp cần được tải xuống từ máy chủ từ xa. Để tải xuống tệp bằng PHP, bạn cần buộc trình duyệt tải xuống tệp. Buộc tải xuống trong PHP giúp tải xuống các tệp từ máy chủ và lưu chúng vào ổ đĩa cục bộ

Trong đoạn mã ví dụ, chúng tôi sẽ chỉ cho bạn cách buộc tải xuống tệp từ URL trong PHP. Bạn có thể tải xuống bất kỳ loại tệp nào (hình ảnh, ZIP, video, âm thanh, v.v.) từ máy chủ từ xa bằng PHP

Sử dụng hàm readfile() với tiêu đề Kiểu nội dung application/x-file-to-save để tải xuống tệp ZIP từ URL từ xa bằng PHP

// Remote download URL
$remoteURL = 'https://www.example.com/files/project.zip';

// Force download
header("Content-type: application/x-file-to-save");
header("Content-Disposition: attachment; filename=".basename($remoteURL));
ob_end_clean();
readfile($remoteURL);
exit;

Lưu ý rằng. Hàm ob_end_clean() sẽ giúp tải xuống một tệp lớn từ máy chủ từ xa trong PHP

Có thể tải xuống một tệp được lưu trữ trên một trang web/máy chủ khác đến máy chủ của bạn hoặc máy tính của người dùng với sự trợ giúp của một tập lệnh PHP đơn giản. Trong hướng dẫn này, tôi sẽ trình bày cách tải xuống tệp bên ngoài bằng PHP

PHP là một ngôn ngữ lập trình phía máy chủ rất linh hoạt mà bạn có thể sử dụng trong công việc phát triển web của mình để thực hiện một loạt các tác vụ liên quan đến trang web hoặc ứng dụng web, bao gồm cả việc tải xuống các tệp

Bạn có thể cần đưa tính năng tải xuống vào trang web hoặc ứng dụng của mình vì một số lý do. Ví dụ: nếu bạn đang bán sản phẩm tải xuống kỹ thuật số, cung cấp tải xuống video hoặc chia sẻ tệp có thể tải xuống miễn phí với khách truy cập hoặc nếu ứng dụng web của bạn cho phép người dùng tạo và tải xuống báo cáo PDF, tệp CSV, lưu trữ ZIP hoặc hình ảnh hoặc tệp đính kèm,

Với PHP, bạn có thể tải xuống và cho phép người dùng của mình tải xuống các tệp không chỉ từ trang web của riêng bạn mà còn từ các trang web khác mà bạn không kiểm soát được (i. e. trang web của bên thứ ba được lưu trữ trên các tên miền hoặc máy chủ khác). Mặc dù đây là một tính năng cực kỳ tiện dụng (cần thiết trong một số trường hợp), nhưng nó chỉ nên được sử dụng trong các điều khoản của (các) trang web mục tiêu và không bao giờ được sử dụng nó cho các hoạt động bất hợp pháp hoặc không thân thiện với người dùng, chẳng hạn như tải xuống bắt buộc

Tôi đã nói về các chủ đề như tạo tệp lưu trữ ZIP bằng PHP, tải xuống tệp bằng PHP và tải xuống tệp bằng JavaScript trong các hướng dẫn khác. Bây giờ, tôi sẽ tiếp tục tải xuống một tệp bên ngoài, một tệp nằm trên một trang web khác, bằng PHP

Cho phép người dùng tải xuống tệp bên ngoài bằng PHP

Tải xuống tệp bằng PHP có thể được thực hiện theo hai cách. Đầu tiên là lấy nội dung tệp và chuẩn bị tải xuống, đồng thời cho phép người dùng bắt đầu quá trình tải xuống bằng cách mở trang hoặc nhấp vào nút chẳng hạn như liên kết tải xuống HTML. Với mục đích này, chúng tôi sẽ tạo một tệp PHP, e. g. Tải xuống. php

Chúng tôi sẽ sử dụng tên miền ví dụ (tutsandtips. com) và một tệp PDF (my-file. pdf) cho mục đích trình diễn. Bước đầu tiên của chúng tôi là gán URL tệp cho một biến và gán tên tệp cho tệp sẽ được tải xuống, như sau

$url = "https. //www. tutsandtips. com/tệp của tôi. pdf";
$file_name = "tệp của tôi. pdf";
?>

Bạn có thể đặt tên cho các biến của mình theo ý muốn, nhưng hãy đảm bảo rằng bạn chỉ định chính xác URL của tệp. Tên tệp thực tế và tên tệp đã tải xuống không cần giống nhau

Thứ hai, chúng tôi chỉ định tiêu đề chính xác cho tệp PDF để tệp có thể được phân tích cú pháp chính xác

$url = "https. //www. tutsandtips. com/tệp của tôi. pdf";
$file_name = "tệp của tôi. pdf";

header("Kiểu nội dung. application/pdf");
header("Bố trí nội dung. tập tin đính kèm; . $file_name. "'");
?>

Chúng tôi đã sử dụng hàm header() hai lần, lần đầu tiên để chỉ định loại MIME cho tệp PDF (ứng dụng/pdf) và lần thứ hai để chỉ định phương thức xử lý nội dung (tệp đính kèm) và tên tệp. Lưu ý rằng bạn sẽ cần sử dụng đúng loại MIME cho các tệp khác nhau. Chú ý sử dụng đúng dấu ngoặc đơn và dấu ngoặc kép. Bạn cũng có thể kiểm tra danh sách các loại tệp MIME này để tìm loại tệp nào bạn sẽ cần để tải xuống tệp của mình

Điều cuối cùng chúng ta cần là lấy nội dung tệp bằng cách sử dụng file_get_contents() và lặp lại nó để tệp sẵn sàng tải xuống khi tập lệnh này được chạy

$url = "https. //www. tutsandtips. com/tệp của tôi. pdf";
$file_name = "tệp của tôi. pdf";

header("Kiểu nội dung. application/pdf");
header("Bố trí nội dung. tập tin đính kèm; . $file_name. "'");

echo file_get_contents($url);
?>

Đặt đoạn mã trên vào phần tải xuống của bạn. php và liên kết tới nó, nơi bạn sẽ cung cấp tệp tải xuống, tôi. e. sau khi gửi email. Khi người dùng nhấp vào liên kết đó và tập lệnh tải xuống được chạy, tùy thuộc vào cài đặt trình duyệt của người dùng, quá trình tải xuống sẽ tự động bắt đầu hoặc yêu cầu xác nhận của người dùng để lưu tệp

Tải các tệp bên ngoài về máy chủ của bạn bằng PHP

Cách thứ hai để tải xuống tệp từ máy chủ bên ngoài bằng PHP là tải xuống trực tiếp và lưu tệp vào máy chủ, có hoặc không có sự tương tác của người dùng

Chúng tôi bắt đầu với việc xác định URL của tệp đích và đích của tệp tải xuống. Đích đến của tệp tải xuống là vị trí mà tệp đã tải xuống sẽ được lưu trên máy chủ của bạn

$url = "https. //www. tutsandtips. com/tệp của tôi. pdf";
$file_destination = "/files/my-file. pdf";
?>

và tiếp tục đọc nội dung tệp bằng hàm file_get_contents() rồi ghi nội dung đó vào một tệp trên máy chủ tại đích đã chỉ định bằng hàm file_put_contents()

$url = "https. //www. tutsandtips. com/tệp của tôi. pdf";
$file_destination = "/files/my-file. pdf";

$file_content = file_get_contents($url);
file_put_contents($file_destination, $file_content);
?>

Khi tập lệnh này được chạy, tệp PDF mục tiêu sẽ được tải xuống máy chủ của bạn và được lưu ở vị trí đã chỉ định

Cũng xin lưu ý rằng máy chủ lưu trữ web của bạn (hoặc máy chủ cục bộ nếu bạn đang thiết lập cục bộ) phải cho phép sử dụng các hàm file_get_contents() và file_put_contents() để các tập lệnh tải xuống này hoạt động

Làm cách nào để tải xuống tệp PHP từ URL trực tuyến?

Nếu tệp nằm trên máy chủ khác, bạn có ít tùy chọn khả thi. .
Truy cập nó qua FTP (nếu bạn có thông tin đăng nhập và quyền truy cập)
Có quy tắc Viết lại URL đặc biệt trên máy chủ đó sẽ hướng dẫn máy chủ web gửi tệp dưới dạng văn bản thuần túy thay vì thực thi nó (e. g. tập tin nào đó. php. txt )

Làm cách nào để tạo PDF và tải xuống bằng PHP?

php yêu cầu('. /fpdf. php'); . '); . Upon execution, the PHP script will generate a PDF file in your browser.

Làm cách nào để tải xuống tệp từ mã PHP?

PHP cho phép bạn tải xuống tệp dễ dàng bằng hàm readfile() tích hợp. Hàm readfile() đọc một tệp và ghi nó vào bộ đệm đầu ra. .
tiêu đề ('Loại nội dung. ứng dụng/octet-stream');
tiêu đề ("Mã hóa chuyển nội dung. utf-8");

Làm cách nào để tải xuống tệp zip từ URL trong PHP?