Cách tải xuống tệp bằng PHP

How Download File Php



Nói chung, không cần tập lệnh PHP để tải xuống tệp có phần mở rộng exezip . Nếu vị trí tệp của loại tệp này được đặt trong href thuộc tính của phần tử neo, sau đó tệp sẽ tự động tải xuống khi người dùng nhấp vào liên kết tải xuống. Một số tệp, chẳng hạn như hình ảnh các tập tin, PDF các tập tin, chữ các tập tin, CSV các tệp, v.v., không tự động tải xuống và thay vào đó, mở trong trình duyệt khi người dùng nhấp vào liên kết tải xuống. Các tệp này có thể được tải xuống cưỡng bức bằng PHP bằng cách sử dụng readfile () chức năng không tải xuống tự động. Hướng dẫn này chỉ cho bạn cách bắt buộc tải xuống bất kỳ tệp nào bằng tập lệnh PHP.

Kiểm tra các liên kết tải xuống

Trước đây nó đã được đề cập rằng zipexe tập tin tải xuống tự động mà không cần sử dụng tập lệnh PHP. Đầu tiên, tạo một tệp HTML với mã sau. Ở đây, bốn phần tử neo được xác định để tải xuống bốn loại tệp. Các loại tệp này bao gồm tệp TEXT, ZIP, PDF và JPG.







Download.html



< html >
< cái đầu >
< chức vụ >Tải tập tin</ chức vụ >
</ cái đầu >
< cơ thể người >
< P >< đến href='abc.txt'>Tải xuống tệp TEXT</ đến ></ P >
< P >< đến href='đường chân trời.zip'>Tải xuống tệp ZIP</ đến ></ P >
< P >< đến href='Lecture.pdf'>Tải xuống tệp PDF</ đến ></ P >
< P >< đến href='rose.jpg'>Tải xuống tệp JPG</ đến ></ P >
</ cơ thể người >
</ html >

Đầu ra
Hộp thoại sau sẽ xuất hiện để tải xuống tệp sau khi nhấp vào liên kết tệp zip. Sau đó, người dùng có thể tải xuống tệp hoặc mở tệp trong trình quản lý lưu trữ.




Nếu bạn nhấp vào tệp hình ảnh, hình ảnh sẽ được mở tự động trong trình duyệt, như được hiển thị trong đầu ra sau đây. Bạn phải lưu tệp để tạo bản sao của tệp hình ảnh trong ổ đĩa cục bộ. Theo cách tương tự, khi bạn nhấp vào liên kết tệp PDF và TEXT, nội dung của tệp sẽ được mở trong trình duyệt mà không cần tải tệp xuống. Giải pháp cho vấn đề này là tải xuống tệp cưỡng bức bằng cách sử dụng PHP tích hợp sẵn Đọc tài liệu() hàm số.





Tải xuống tệp bằng hàm readfile ()

Các Đọc tài liệu() hàm được sử dụng trong tập lệnh PHP để buộc tải xuống bất kỳ tệp nào ở vị trí hiện tại hoặc tệp có đường dẫn tệp. Cú pháp của hàm này được đưa ra dưới đây.



Cú pháp
int readfile (string $ filename [, bool $ use_include_path = false [, resource $ context]])

Hàm này có thể có ba đối số. Đối số đầu tiên là bắt buộc và hai đối số còn lại là tùy chọn. Đối số đầu tiên, $ filename , lưu trữ tên tệp hoặc tên tệp với đường dẫn sẽ tải xuống. Giá trị mặc định của tham số thứ hai, $ use_include_path , là false và sẽ được đặt thành true nếu tên tệp có đường dẫn được sử dụng trong đối số đầu tiên. Đối số thứ ba, $ ngữ cảnh , được sử dụng để chỉ ra tài nguyên luồng ngữ cảnh. Hàm này trả về số byte được đọc từ tệp được đề cập trong đối số đầu tiên. Việc sử dụng chức năng này được thể hiện trong hai ví dụ sau.

Ví dụ 1: Tải xuống tệp với tên tệp

Trong ví dụ này, chúng tôi sẽ tạo một tệp HTML với mã sau, trong đó tên tệp sẽ được chuyển dưới dạng tham số của URL có tên con đường và giá trị của tham số này sẽ được chuyển đến tệp PHP có tên download.php .

download2.html

< html >
< cái đầu >
< chức vụ > Tải xuống tệp</ chức vụ >
</ cái đầu >
< cơ thể người >
< P >< đến href='download.php? path = abc.txt'> Tải xuốngCHỮtập tin</ đến ></ P >
< P >< đến href='download.php? path = Horizon.zip'> Tải xuống tệp ZIP</ đến ></ P >
< P >< đến href='download.php? path = Lecture.pdf'> Tải xuống tệp PDF</ đến ></ P >
< P >< đến href='download.php? path = rose.jpg'> Tải xuống tệp JPG</ đến ></ P >
</ cơ thể người >
</ html >

Chúng tôi sẽ tạo tệp PHP với mã sau để tải tệp xuống một cách cưỡng bức. Đây, Không còn) được sử dụng để kiểm tra xem $ _GET [‘đường dẫn’] được định nghĩa. Nếu biến được xác định, File tồn tại() được sử dụng để kiểm tra xem tệp có tồn tại trong máy chủ hay không. Tiếp theo, tiêu đề () được sử dụng để đặt thông tin tiêu đề cần thiết trước khi sử dụng Đọc tài liệu() hàm số. Các basename () được sử dụng để truy xuất tên tệp và Kích thước tập tin() được sử dụng để đọc kích thước của tệp theo byte, sẽ được hiển thị trong hộp thoại mở để tải tệp xuống. Các tuôn ra() được sử dụng để xóa bộ đệm đầu ra. Các Đọc tài liệu() chức năng chỉ được sử dụng với tên tệp, tại đây.

download.php



nếu như( Không còn ($ _ NHẬN['con đường']))
{
// Đọc tên tệp
$ filename = $ _ NHẬN['con đường'];
// Kiểm tra tệp có tồn tại hay không
nếu như( File tồn tại ($ filename)) {

// Xác định thông tin tiêu đề
tiêu đề ('Nội dung-Mô tả: Truyền tệp');
tiêu đề ('Content-Type: application / octet-stream');
tiêu đề ('Cache-Control: no-cache, must-revalidate');
tiêu đề ('Hết hạn: 0');
tiêu đề ('Nội dung-Bố trí: tệp đính kèm; filename = ''. tên cơ sở ($ filename).'');
tiêu đề ('Thời lượng nội dung: ' . Kích thước tập tin ($ filename));
tiêu đề ('Pragma: công khai');

// Xóa bộ đệm đầu ra của hệ thống
tuôn ra ();

// Đọc kích thước của tệp
Đọc tài liệu ($ filename);

// Chấm dứt khỏi tập lệnh
NS ();
}
khác{
quăng đi 'Tập tin không tồn tại.';
}
}
khác
quăng đi 'Tên tệp không được xác định.'
?>

Đầu ra
Kết quả sau sẽ xuất hiện sau khi nhấp vào liên kết tải xuống của tệp hình ảnh. Kích thước tệp của rose.jpg hình ảnh là 27,2 KB , như được hiển thị trong hộp thoại. Bạn có thể tải xuống tệp bằng cách chọn Lưu tập tin nút radio và nhấn VÂNG cái nút.

Ví dụ 2: Tải xuống tệp bằng đường dẫn tệp

Nếu tệp tồn tại ở vị trí tệp nhất định, đường dẫn tệp sẽ được yêu cầu đề cập trong URL. Trong ví dụ này, chúng tôi sẽ tạo một tệp HTML với mã sau, mã này sẽ chuyển tên tệp với đường dẫn tệp:

download3.html

< html >
< cái đầu >
< chức vụ >Tải tập tin</ chức vụ >
</ cái đầu >
< cơ thể người >
< P >< đến href='download.php? path = Download / Lecture.pdf'>Tải xuống tệp PDF</ đến ></ P >
< P >< đến href='download2.php? path = Download / rose.jpg'>Tải xuống tệp JPG</ đến ></ P >
</ cơ thể người >
</ html >

Chúng tôi sẽ tạo một tệp PHP với mã sau để tải tệp xuống từ đường dẫn tệp. Mã PHP trong ví dụ trước sẽ được sửa đổi một chút để tải tệp xuống từ đường dẫn đã cho. Các Clerstatecache () được sử dụng để xóa bộ nhớ cache đã được lưu trữ trước đó. Hai đối số được sử dụng trong Đọc tài liệu() hàm số.

download2.php


nếu như( Không còn ($ _ NHẬN['con đường']))
{
// Đọc url
$ url = $ _ NHẬN['con đường'];

// Xóa bộ nhớ cache
làm sạch ();

// Kiểm tra đường dẫn tệp có tồn tại hay không
nếu như( File tồn tại ($ url)) {

// Xác định thông tin tiêu đề
tiêu đề ('Nội dung-Mô tả: Truyền tệp');
tiêu đề ('Content-Type: application / octet-stream');
tiêu đề ('Nội dung-Bố trí: tệp đính kèm; filename = ''. tên cơ sở ($ url).'');
tiêu đề ('Thời lượng nội dung: ' . Kích thước tập tin ($ url));
tiêu đề ('Pragma: công khai');

// Xóa bộ đệm đầu ra của hệ thống
tuôn ra ();

// Đọc kích thước của tệp
Đọc tài liệu ($ url,thật);

// Chấm dứt khỏi tập lệnh
NS ();
}
khác{
quăng đi 'Đường dẫn tệp không tồn tại.';
}
}
quăng đi 'Đường dẫn tệp không được xác định.'

?>

Đầu ra
Sau khi nhấp vào liên kết tải xuống của tệp PDF, kết quả sau sẽ xuất hiện.

Video hướng dẫn

Phần kết luận

Bài viết này cung cấp một cách đơn giản để tải xuống bất kỳ tệp nào bằng tập lệnh PHP, nhằm giúp người đọc thêm tính năng tải xuống trong tập lệnh của họ.