Kết nối

Ép buộc trình duyệt tải tập tin tự động với định dạng bất kỳ trong PHP

49 lượt xem 
 
Thể loại: Lập trình Web với PHP 

Giả sử bạn có 1 trang web, trên trang này chứa liên kết tới tập tin bạn cần tải và bạn muốn tập tin này tự động tải về máy khi nhấn chuột lên liên kết đó. Đây là vấn đề mà nhiều lập trình viên thường hay gặp (kể cả chúng tôi) khi phát triển Web. Thực ra, giải pháp rất đơn giản nếu bạn sử dụng PHP và bài viết này sẽ hướng dẫn cách thực hiện.

Nếu bạn để ý, với một liên kết tới tập tin có đuôi .exe, .msi, .pdf, .doc,… thì trình duyệt sẽ có thể tự động tải về các tập tin này. Tuy nhiên, với một số tập tin khác có đuôi là .html, .php, .aspx, .config,… thì trình duyệt lại không cho bạn tải tập tin về hoặc là báo lỗi hoặc là chỉ hiển thị nội dung đã biên dịch thành mã HTML.

Để cho phép tải bất kỳ tập tin nào về tự động, bạn tạo 1 trang tên là download.php với nội dung như sau:

<?php
header("Content-disposition: attachment; filename=taptin.pdf");
header("Content-type: application/pdf");
readfile("taptin.pdf");
?>

Trong ví dụ trên, chúng ta tạo 1 head chứa tên tập tin “taptin.pdf” và dạng của tập tin này là pdf, sau đó dùng hàm readfile để đọc file và tải về máy.

Bạn có thể tạo 1 trang test.html với nội dung chứa liên kết tải về như sau:

<html>
<head>
<title>Tải tập tin tự động PHP --- dammio.com</title>
<meta charset="utf-8">
</head>
<body>
<a href="download.php">Tải về tập tin PDF</a>
</body>
</html>

Nếu bạn xài gói XAMPP để mô phỏng PHP thì bỏ tập tin test.htmldownload.php cũng như đặt tập tin taptin.php vào cùng thư mục htdocs.

Tiếp theo, chạy đường dẫn http://localhost/test.html (hoặc http://localhost:8080/test.html) và nhấn vào liên kết để có thể tải về taptin.pdf tự động.

Một số lưu ý với tập tin tải về đó là bạn hạn chế khoảng trắng và ký tự lạ trong tên tập tin để trình duyệt có thể nhận diện tập tin tải về tốt nhất. Ví dụ tập tin có tên “van ban.pdf” thì nên đặt tên lại là “van_ban.pdf“. Chúng tôi chúc bạn thành công!

Bình luận Facebook

Để lại bình luận

avatar
1000
  Theo dõi  
Thông báo của