$_FILES là một mảng superglobal trong PHP, nó cho phép bạn lấy dữ liệu từ file được tải lên đến máy chủ từ một biểu mẫu HTML. Sử dụng $_FILES giúp cho việc xử lý và lưu trữ file tải lên trở nên dễ dàng và tiện lợi hơn.
Các bài viết liên quan:
Tại sao nên sử dụng $_FILES ?
- Upload tập tin lên máy chủ.
- Kiểm tra kích thước và loại tập tin được tải lên.
- Lấy thông tin của tập tin như tên tập tin, kích thước, định dạng tập tin.
- Sử dụng tập tin tải lên trong các mục đích khác nhau như lưu trữ, xử lý, hiển thị.
Sử dụng $_files cho phép bạn tải lên các tập tin (file) từ máy tính của người dùng lên máy chủ. Nó cung cấp thông tin về tập tin, chẳng hạn như tên, định dạng, dung lượng, và địa chỉ tập tin tạm trên máy chủ. Bạn có thể sử dụng thông tin này để kiểm tra, chấp nhận hoặc từ chối các tập tin tải lên và xử lý chúng theo cách thích hợp.
Xem thêm Các operation trên File
Khi nào nên sử dụng $_FILES ?
$_FILES trong PHP được sử dụng để lấy thông tin từ file được tải lên từ một form HTML. Nó được sử dụng khi bạn muốn lấy các file tải lên từ máy khách, ví dụ như tải lên hình ảnh, tải lên tập tin, vv. Nó nên được sử dụng khi bạn cần xử lý các file tải lên từ máy khách.
Sử dụng $_FILES trong PHP như thế nào ?
$_FILES trong PHP dùng để lấy thông tin về file được upload lên máy chủ từ form HTML. Sử dụng nó như sau:
- Thiết lập form HTML với phương thức POST và thuộc tính enctype=”multipart/form-data”
- Tạo input type=”file” trong form
- Xử lý file tải lên trong PHP bằng $_FILES[“file_input_name”][“property”]
Ví dụ:
$_FILES["file"]["name"] lấy tên file tải lên $_FILES["file"]["type"] lấy kiểu file tải lên $_FILES["file"]["tmp_name"] lấy đường dẫn tạm của file tải lên $_FILES["file"]["error"] lấy mã lỗi khi tải file lên.
Xem thêm Express.js File Upload
Những lưu ý khi sử dụng $_FILES
Trong quá trình sử dụng $_files, cần chú ý các điểm sau:
- $_files chỉ tồn tại khi form có thuộc tính enctype=”multipart/form-data”.
- Tên file trong $_files phải tương ứng với name của input type=”file” trong form.
- Cần kiểm tra trước khi lưu file, xem file có đúng định dạng, kích thước hợp lệ hay không.
- Nên lưu file với tên khác hoặc tạo thư mục tạm để lưu file tải lên.
- Tránh tải lên file có nội dung của bất kỳ script nào để tránh tình trạng tấn công.
Xem thêm Form trong website là gì ?
Các ví dụ sử dụng $_FILES
Các ví dụ sử dụng $_FILES trong PHP:
- Upload file với phương thức POST:
if(isset($_POST['submit'])){ $file = $_FILES['file']; $fileName = $_FILES['file']['name']; $fileTmpName = $_FILES['file']['tmp_name']; $fileSize = $_FILES['file']['size']; $fileError = $_FILES['file']['error']; $fileType = $_FILES['file']['type']; $fileExt = explode('.', $fileName); $fileActualExt = strtolower(end($fileExt)); $allowed = array('jpg', 'jpeg', 'png', 'pdf'); if(in_array($fileActualExt, $allowed)){ if($fileError === 0){ if($fileSize < 1000000){ $fileNameNew = uniqid('', true). "." .$fileActualExt; $fileDestination = 'uploads/'.$fileNameNew; move_uploaded_file($fileTmpName, $fileDestination); echo "File uploaded successfully"; }else{ echo "File is too big"; } }else{ echo "There was an error uploading your file"; } }else{ echo "You cannot upload files of this type"; } }
- Upload nhiều file cùng một lúc:
if(isset($_POST['submit'])){ $files = $_FILES['file']; $count = count($_FILES['file']['name']); for($i = 0; $i < $count; $i++){ $fileName = $_FILES['file']['name'][$i]; $fileTmpName = $_FILES['file']['tmp_name'][$i]; $fileSize = $_FILES['file']['size'][$i]; $fileError = $_FILES['file']['error'][$i]; $fileType = $_FILES['file']['type'][$i]; $fileExt = explode('.', $fileName); $fileActualExt = strtolower(end($fileExt)); $allowed = array('jpg', 'jpeg', 'png', 'pdf'); if(in_array($fileActualExt, $allowed)){ if($fileError === 0){ if($fileSize < 1000000){ $fileNameNew = uniqid('', true). "." .$fileActualExt; $fileDestination = 'uploads/'.$fileNameNew; move_uploaded_file($fileTmpName, $fileDestination); echo "File ".$fileName." uploaded successfully <br>"; }else{ echo "File ".$fileName." is too big <br>"; } }else{ // } } } }
- Kiểm tra kích thước tập tin:
if ($_FILES['file']['size'] > 500000) { echo 'Tập tin quá lớn'; } Kiểm tra định dạng tập tin: $allowed = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($_FILES['file']['type'], $allowed)) { echo 'Định dạng tập tin không được hỗ trợ'; }
- Thêm thuộc tính độ rộng và chiều cao cho tập tin hình ảnh:
list($width, $height) = getimagesize($_FILES['file']['tmp_name']); $_FILES['file']['width'] = $width; $_FILES['file']['height'] = $height;
Kết luận
$_FILES là một mảng superglobal trong PHP dùng để lưu thông tin về tập tin được tải lên từ một form. Sử dụng $_FILES giúp cho việc quản lý và xử lý tập tin tải lên dễ dàng và tiện lợi hơn. Nhưng cũng cần lưu ý về an toàn khi sử dụng $_FILES vì có thể gây ra rủi ro cho hệ thống.
Xem thêm đọc và ghi file trong c++