Hướng dẫn php click to download file - php nhấp để tải xuống tệp

Tải xuống demo

Có hai cách để kích hoạt để tải xuống một tập tin.

  1. Thuộc tính tải xuống HTML 5.
  2. Tải xuống tệp bằng tập lệnh PHP.

Thuộc tính tải xuống kích hoạt tải xuống lực nhưng nó không được Safari hỗ trợ. Sau đây & nbsp; là các phiên bản hỗ trợ thuộc tính tải xuống.

Chrome = & nbsp; 14.0iêm Explorer = & nbsp; 13.0firefox = & nbsp; 20.0opera = & nbsp; 15.0
Internet Explorer = 13.0
Firefox = 20.0
Opera = 15.0

Tải xuống tệp bằng cách sử dụng thuộc tính tải xuống HTML 5

<a href="SampleFile.pdf" download>Download File</a>

Nếu bạn muốn đổi tên tệp tại thời điểm tải xuống, hãy sử dụng mã sau:

<a href="SampleFile.pdf" download="new_filename">Download File</a>

Tải xuống tệp bằng cách sử dụng tập lệnh phía máy chủ

Chúng tôi & nbsp; sẽ cần tạo tệp script php & nbsp; và truyền tên tệp & nbsp; trong thuộc tính href & nbsp; mà chúng tôi & nbsp; muốn tải xuống như bạn có thể thấy bên dưới:

<a href="download.php?file=SampleFile.pdf" target="_new">Download File</a>

Kịch bản 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);
	}
}

Tệp & nbsp; ở trên sẽ đọc tên tệp và kích hoạt để buộc tải xuống. Ví dụ này & nbsp; sẽ hoạt động trên tất cả các trình duyệt.

Lưu ý: Tôi đã sử dụng ví dụ này cho loại tệp PDF, bạn có thể thay đổi nó theo yêu cầu của bạn. I used this example for PDF file type, you can change it as per your requirement.

Nếu bạn tìm thấy hướng dẫn này hữu ích, vì vậy hãy chia sẻ nó với bạn bè, nhóm phát triển của bạn và để lại nhận xét của bạn.

Trang chính thức của Facebook: Tất cả các thủ thuật PHP

// đọc kích thước của filereadfile ($ url, true);

// Xác định thông tin tiêu đề ('D-Description: Truyền tệp'); Tiêu đề ('Loại nội dung: Ứng dụng/Octet-Stream'); .exe and zip. If the file location of this type of file is set in the href attribute of the anchor element, then the file automatically downloads when the user clicks on the download link. Some files, such as image files, PDF files, text files, CSV files, etc., do not download automatically, and instead, open in the browser when the user clicks on the download link. These files can be downloaded forcibly in PHP using the readfile() function that does not download automatically. This tutorial shows you how to forcibly download any file using PHP script.

// đọc kích thước của filereadfile ($ url, true);

// chấm dứt từ scriptdie ();} other {echo "đường dẫn tệp không tồn tại.";}} Echo "đường dẫn tệp không được xác định."zip and exe files download automatically, without using PHP script. First, create an HTML file with the following code. Here, the four anchor elements are defined to download the four types of files. These file types include TEXT, ZIP, PDF, and JPG files.

Download.html

?>html>
<head>
<title>Download Files</title>
</head>
<body>
<p><a href="abc.txt">Download TEXT file</a></p>
<p><a href="horizon.zip">Download ZIP file</a></p>
<p><a href="lecture.pdf">Download PDF file</a></p>
<p><a href="rose.jpg">Download JPG file</a></p>
</body>
</html>

Xuất 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ữ.
The following dialog box will appear to download the file after clicking the zip file link. The user can then download the file or open the file in the archive manager.


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. Bạn phải lưu tệp để tạo một 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 tải xuống tệp. Giải pháp cho vấn đề này là tải xuống tệp sử dụng hàm pHP readFile () tích hợp.readfile() function.

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

Hàm readFile () được sử dụng trong tập lệnh PHP để tải xuống bất kỳ tệp nào của 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.readfile() function is used in PHP script to forcibly download any file of the current location, or the file with the file path. The syntax of this function is given below.

Cú pháp int readfile (Chuỗi $ fileName [, bool $ use_include_path = false [, tài nguyên $ bối cảnh]]))
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

Hàm này có thể lấy ba đối số. Đối số đầu tiên là bắt buộc, và hai đối số khác 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à sai 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, $ bối cảnh, được sử dụng để chỉ ra tài nguyên luồng ngữ cảnh. Hàm này trả về số lượng 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 hiển thị trong hai ví dụ sau.$filename, stores the filename or filename with the path that will download. The default value of the second parameter, $use_include_path, is false and will be set to true if the filename with the path is used in the first argument. The third argument, $context, is used to indicate the context stream resource. This function returns the number of bytes read from the file mentioned in the first argument. The uses of this function are shown in the following two examples.

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 truyền dưới dạng tham số của đường dẫn URL có tên và giá trị của tham số này sẽ được chuyển đến tệp PHP có tên Download.php.path, and the value of this parameter will be passed to the PHP file named download.php.

download2.html

Tải xuống tệp tải xuống tệp văn bản Tải xuống tệp zip tải xuống tệp pdf tải xuống tệp jpghtml>
<head>
<title>Download Files</title>
</head>
<body>
<p><a href="download.php?path=abc.txt">Download TEXT file</a></p>
<p><a href="download.php?path=horizon.zip">Download ZIP file</a></p>
<p><a href="download.php?path=lecture.pdf">Download PDF file</a></p>
<p><a href="download.php?path=rose.jpg">Download JPG file</a></p>
</body>
</html>

Chúng tôi sẽ tạo tệp PHP với mã sau để tải xuống tệp. Ở đây, hàm isset () được sử dụng để kiểm tra xem $ _get [‘đường dẫn] có được xác định hay không. Nếu biến được xác định, hàm file_exists () đượ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, hàm tiêu đề () được sử dụng để đặt thông tin tiêu đề cần thiết trước khi sử dụng hàm readFile (). Hàm basename () được sử dụng để truy xuất tên tệp và hàm fileSize () được sử dụng để đọc kích thước của tệp trong byte, sẽ được hiển thị trong hộp thoại mở để tải xuống tệp. Hàm Flush () được sử dụng để xóa bộ đệm đầu ra. Hàm readFile () chỉ được sử dụng với tên tệp, ở đây.isset() function is used to check whether the $_GET[‘path’] is defined. If the variable is defined, the file_exists() function is used to check whether the file exists in the server. Next, the header() function is used to set the necessary header information before using the readfile() function. The basename() function is used to retrieve the filename, and the filesize() function is used to read the size of the file in bytes, which will be shown in the opening dialog box to download the file. The flush() function is used to clear the output buffer. The readfile() function is used with the filename only, here.

download.php

if (isset ($ _ get ['path'])) {// đọc tên tệp $ fileName = $ _ get ['path']; // kiểm tra tệp tồn tại hoặc notif (file_exists ($ filename)) {

if (isset ($ _ get ['path'])) {// đọc tên tệp $ fileName = $ _ get ['path']; // kiểm tra tệp tồn tại hoặc notif (file_exists ($ filename)) {(isset($_GET['path']))
{
//Read the filename
$filename = $_GET['path'];
//Check the file exists or not
if(file_exists($filename)) {

// Xác định thông tin tiêu đề ('Description: Truyền tệp'); Tiêu đề ('Loại nội dung: Ứng dụng/Octet-Stream'); "Hết hạn: 0"); Tiêu đề ('Xác định nội dung: tệp đính kèm; fileName = "'. Basename ($ fileName). '"'); Tiêu đề ('độ dài nội dung:' .filesize ($ fileName)); tiêu đề (tiêu đề ( 'Pragma: công khai');
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: 0");
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Content-Length: ' . filesize($filename));
header('Pragma: public');

// Xóa bộ đệm đầu ra hệ thống ();
flush();

// đọc kích thước của filereadfile ($ fileName);
readfile($filename);

// chấm dứt từ scriptdie ();} other {echo "tệp không tồn tại.";}} Use
die();
}
else{
echo "File does not exist.";
}
}
else
echo "Filename is not defined."
?>

Đầu ra đầu ra 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 hình ảnh Rose.jpg là 27,2 kb, như thể hiện trong hộp thoại. Bạn có thể tải xuống tệp bằng cách chọn nút Save File Radio và nhấn nút OK.
The following output will appear after clicking the download link of the image file. The file size of the rose.jpg image is 27.2 KB, as shown in the dialog box. You can download the file by selecting the Save File radio button and pressing the OK button.

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

Nếu tệp tồn tại tại vị trí tệp đã cho, đườ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, sẽ truyền tên tệp với đường dẫn tệp:

download3.html

Tải xuống tệp tải xuống tệp pdf filedown tải tệp jpghtml>
<head>
<title>Download Files</title>
</head>
<body>
<p><a href="download.php?path=downloads/lecture.pdf">Download PDF file</a></p>
<p><a href="download2.php?path=downloads/rose.jpg">Download JPG file</a></p>
</body>
</html>

Chúng tôi sẽ tạo một tệp PHP với mã sau để tải xuống một tệp từ đường dẫn tệp. Mã PHP trong ví dụ trước sẽ được sửa đổi một chút để tải xuống tệp từ đường dẫn đã cho. Hàm ClearStateCache () được sử dụng để xóa bộ đệm được lưu trữ trước đó. Hai đối số được sử dụng trong hàm readfile ().clearstatecache() function is used to clear the cache that was previously stored. Two arguments are used in the readfile() function.

download2.php

if (isset ($ _ get ['path'])) {// đọc tên tệp $ fileName = $ _ get ['path']; // kiểm tra tệp tồn tại hoặc notif (file_exists ($ filename)) {
if(isset($_GET['path']))
{
//Read the url
$url = $_GET['path'];

if (isset ($ _ get ['path'])) {// đọc tên tệp $ fileName = $ _ get ['path']; // kiểm tra tệp tồn tại hoặc notif (file_exists ($ filename)) {
clearstatcache();

// Xác định thông tin tiêu đề ('Description: Truyền tệp'); Tiêu đề ('Loại nội dung: Ứng dụng/Octet-Stream'); "Hết hạn: 0"); Tiêu đề ('Xác định nội dung: tệp đính kèm; fileName = "'. Basename ($ fileName). '"'); Tiêu đề ('độ dài nội dung:' .filesize ($ fileName)); tiêu đề (tiêu đề ( 'Pragma: công khai');
if(file_exists($url)) {

// Xóa bộ đệm đầu ra hệ thống ();
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($url).'"');
header('Content-Length: ' . filesize($url));
header('Pragma: public');

// Xóa bộ đệm đầu ra hệ thống ();
flush();

// đọc kích thước của filereadfile ($ url, true);
readfile($url,true);

// chấm dứt từ scriptdie ();} other {echo "đường dẫn tệp không tồn tại.";}} Echo "đường dẫn tệp không được xác định."
die();
}
else{
echo "File path does not exist.";
}
}
echo "File path is not defined."

?>

Đầu ra Sau khi liên kết tải xuống của tệp PDF được nhấp, đầu ra sau sẽ xuất hiện.
After the download link of the PDF file is clicked, the following output will appear.

Video hướng dẫn

Sự kết luận

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

Thông tin về các Tác giả

Tôi là một huấn luyện viên của các khóa học lập trình web.Tôi thích viết bài báo hoặc hướng dẫn về các chủ đề CNTT khác nhau.Tôi có một kênh YouTube trong đó nhiều loại hướng dẫn dựa trên Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel, v.v.