Làm cách nào để xử lý tải lên tệp lớn trong PHP?

Tải lên tệp từ biểu mẫu web bằng PHP thật dễ dàng. Hướng dẫn trực tuyến cung cấp phần Xử lý tệp tải lên và có một số bài viết về sitepoint. com, bao gồm Cách xử lý tệp tải lên bằng PHP của Kevin Yank

Một trong những cách sử dụng phổ biến nhất là tải lên hình ảnh. Người dùng của bạn có thể gửi ảnh từ một biểu mẫu mà không cần dùng đến FTP hoặc các phương pháp phức tạp khác. HTML5 và Flash cũng cho phép kéo và thả, vì vậy thao tác có thể trở nên dễ dàng hơn khi trình duyệt phát triển

Đây là nơi các vấn đề có thể bắt đầu. Các nhà sản xuất máy ảnh liên tục khoe khoang rằng họ có bộ megapixel lớn hơn đối thủ cạnh tranh. Tất nhiên, tất cả đều là rác rưởi — trừ khi bạn là một nhiếp ảnh gia chuyên nghiệp hoặc cần in những hình ảnh cực lớn, mọi thứ trên 4MP đều khá vô nghĩa và chất lượng ống kính quan trọng hơn nhiều. Tuy nhiên, ngay cả máy compact cấp thấp cũng có 12MP và điện thoại di động có hơn 5MP. Kết quả là một ảnh chụp nhanh điển hình có thể dễ dàng có kích thước 6MB

Theo mặc định, PHP cho phép tải lên tệp tối đa là 2MB. Bạn có thể yêu cầu người dùng thay đổi kích thước hình ảnh của họ trước khi tải lên nhưng hãy đối mặt với điều đó. họ sẽ không. May mắn thay, chúng ta có thể tăng giới hạn khi cần thiết

Hai tùy chọn cấu hình PHP kiểm soát kích thước tải lên tối đa. upload_max_filesizepost_max_size. Cả hai đều có thể được đặt thành, ví dụ: “10M” cho kích thước tệp 10 megabyte

Tuy nhiên, bạn cũng cần xem xét thời gian cần thiết để hoàn thành tải lên. Tập lệnh PHP thường hết thời gian chờ sau 30 giây, nhưng tệp 10 MB sẽ mất ít nhất 3 phút để tải lên trên kết nối băng thông rộng khỏe (hãy nhớ rằng tốc độ tải lên thường chậm hơn năm lần so với tốc độ tải xuống). Ngoài ra, thao tác hoặc lưu hình ảnh đã tải lên cũng có thể gây ra thời gian chờ tập lệnh. Do đó, chúng tôi cần đặt PHP max_input_timemax_execution_time thành một cái gì đó như 300 (5 phút được chỉ định bằng giây)

Các tùy chọn này có thể được đặt trong tệp cấu hình php.ini của máy chủ để chúng áp dụng cho tất cả các ứng dụng của bạn. Ngoài ra, nếu bạn đang sử dụng Apache, bạn có thể định cấu hình cài đặt trong tệp .htaccess của ứng dụng của mình


php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_input_time 300
php_value max_execution_time 300

Cuối cùng, bạn có thể xác định các ràng buộc trong ứng dụng PHP của mình

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

PHP cũng cung cấp hàm set_time_limit() nên bạn không cần đặt trực tiếp max_execution_time

Đặt các tùy chọn trong mã PHP của bạn có thể thực tế hơn, vì bạn có thể kéo dài thời gian thực hiện và tăng kích thước tệp khi ứng dụng của bạn đang mong đợi tải lên lớn. Các biểu mẫu khác sẽ trở lại thời gian chờ 30 giây mặc định và giới hạn 2 MB

Bạn có mẹo nào khác để tải lên các tệp lớn trong PHP không?

Chia sẻ bài viết này

Craig Buckler

Craig là một nhà tư vấn web tự do ở Vương quốc Anh, người đã xây dựng trang đầu tiên của mình cho IE2. 0 vào năm 1995. Kể từ thời điểm đó, anh ấy đã ủng hộ các tiêu chuẩn, khả năng truy cập và các kỹ thuật HTML5 thực hành tốt nhất. Anh ấy đã tạo các thông số kỹ thuật doanh nghiệp, trang web và ứng dụng trực tuyến cho các công ty và tổ chức bao gồm Nghị viện Vương quốc Anh, Nghị viện Châu Âu, Bộ Năng lượng & Biến đổi Khí hậu, Microsoft, v.v. Anh ấy đã viết hơn 1.000 bài báo cho SitePoint và bạn có thể tìm thấy anh ấy @craigbuckler

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
0

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
1

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
2

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
3

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
4

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
5

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
6

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
7

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);
8

Làm cách nào để xử lý tệp tải lên trong PHP?

Tải lên tệp PHP .
Định cấu hình "php. ini" Tập tin. Trước tiên, hãy đảm bảo rằng PHP được định cấu hình để cho phép tải tệp lên. .
Kiểm tra xem tệp đã tồn tại chưa. Bây giờ chúng ta có thể thêm một số hạn chế. .
Kích thước tệp giới hạn. Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload". .
Loại tệp giới hạn. .
Hoàn thành tải lên tệp PHP Script

Kích thước tệp tối đa để tải lên tệp trong PHP là bao nhiêu?

Các giá trị mặc định cho PHP sẽ hạn chế bạn ở kích thước tệp tải lên tối đa 2 MB .

Chúng tôi có thể tải tệp có kích thước bất kỳ lên ứng dụng PHP 7 không?

Theo mặc định, kích thước tải lên tệp PHP được đặt thành tệp tối đa 2MB trên máy chủ, nhưng bạn có thể tăng hoặc giảm kích thước tối đa của tệp tải lên bằng cách sử dụng tệp cấu hình PHP ( php. ini ) , tệp này có thể được tìm thấy ở các vị trí khác nhau trên các bản phân phối Linux khác nhau.

Chúng tôi có thể tải tệp có kích thước bất kỳ lên ứng dụng PHP Có kể từ PHP 7 không?

Theo mặc định, PHP cho phép tải lên tệp tối đa là 2MB