Quản lý băng thông và "tài sản" là 2 lý do chính để sử dụng 1 chương trình quản lý tải xuống trên trang web . Bạn thử tưởng tượng có 1 . Bạn thử tưởng tượng có 1. Bạn thử tưởng tượng có 1 trang web cho tải nhạc hoặc ebook với 1 mức phí nho nhỏ, nếu liên kết để tải trực tiếp các tệp bị lộ tùm lum thì thứ nhất là "lỗ vốn", thứ hai là băng thông sẽ hết sạch nhanh đến khoảng trước khi bạn đang xem chuyện gì đã xảy ra.
Một số lý do khác cũng "chính đáng" không kém ví dụ như bạn muốn đếm số lần tải xuống tệp; . Trong những trường hợp như vậy, hãy sử dụng 1 chương trình quản lý tải xuống trên trang web tệp của bạn tự tải lên và các tệp này nằm lại trong cơ sở dữ liệu hoặc được đặt trong 1 thư mục từ bên ngoài web không đọc được. Trong những trường hợp như vậy, hãy sử dụng 1 chương trình quản lý tải xuống trên trang web sẽ khá thuận lợi.
Tuy nhiên, cũng có một số điều cần lưu ý trước khi bạn quyết định sử dụng 1 chương trình quản lý tải xuống trên trang web . . của mình.
- Tốc độ download sẽ chậm hơn rất nhiều so với download file trực tiếp
- Máy chủ sẽ phải xử lý nhiều công việc hơn so với khi cho phép tải xuống tệp trực tiếp
- Nếu tệp được lưu trữ trong cơ sở dữ liệu, bạn nên lưu ý rằng số lượng kết nối đồng thời vào cơ sở dữ liệu là có hạn, trong khi 1 tệp có dung lượng lớn, có thể phải mất tới nửa tiếng hoặc hơn thế nữa để tải xuống
Giả sử bạn có 1 tệp tài liệu. zip trong cùng thư mục với tệp tải xuống. php. Nhưng chỉ mình bạn biết là file tài liệu. zip này nằm ở đâu, người khác muốn tải xuống thì phải truy cập vào tệp tải xuống. php của bạn. Mã nguồn của tệp tải xuống. php will like after.
Mã PHP
//file download.php
Đầu tiên, ta mở tệp tài liệu. zip to read at binary mode [nhị phân].
Mã PHP
$fp = fopen[$filename, "rb"];.
Mã PHP
header["Content-type: application/octet-stream"];
Đồng thời ta cũng thông báo cho trình duyệt biết dung lượng của tệp sẽ được tải xuống.
Mã PHP
header["Content-length: " . filesize[$filename]];
Và cuối cùng là đọc tệp nội dung và lặp lại để trình duyệt tải xuống.
Mã PHP
fpassthru[$fp];
Lệnh fpassthru[$fp]; .
Mã PHP
$content = fread[$handle, filesize[$filename]];
echo $content;
Mã PHP
header["Content-length: " . filesize[$filename]];
Mã PHP
header["Content-type: application/octet-stream"];
Lệnh
Mã PHP
header["Content-type: application/octet-stream"];
Thử chạy ví dụ trên vài lần, thay thế tệp tài liệu. zip bằng một số tệp khác nhau [ví dụ tệp Word, PDF, Excel. ] và thử trên một vài trình duyệt khác nhau, bạn sẽ thấy có vài chỗ hơi khó chịu.
- Trình duyệt sẽ mặc định lưu tệp vào đĩa với tên là tải xuống. php. You must revert your file name for true before open file ra read
- Trong một số trường hợp, thay vì hỏi lưu tệp vào đĩa, trình duyệt sẽ mở luôn tệp [ví dụ: chạy Word hoặc Acrobat mở luôn tệp vừa được tải xuống]
Mã PHP
header['Content-disposition: attachment; filename="'.$filename.'"'];
Cho đến bây giờ chương trình của chúng ta vẫn còn thô sơ, chúng ta vẫn cần chúng .
- Cho phép người dùng chọn tệp để tải xuống. Hiện tại chương trình của chúng ta mới cho phép download 1 file duy nhất
- Check tra data input from user. Đây là một công việc luôn nên làm. Chương trình cho phép sử dụng tùy chọn tệp để tải xuống thì cũng cần phải kiểm tra kỹ kẻo chính tệp cấu hình, nguồn tệp hoặc mật khẩu tệp của bạn bị tải xuống thì phiền
Mã PHP
$fp = fopen[$filename, "rb"];.
0
-------------------> BỔ SUNG BÀI VIẾT