[PHP] – Bài 13: Upload file trong PHP

0

Trong bài học này, chúng ta sẽ tìm hiểu về biến siêu toàn cục $_FILES cũng như cách upload filfe trong PHP.

Video Upload file trong PHP

Hướng dẫn chi tiết

Biến siêu toàn cục $_FILES

$_FILES là một mảng kết hợp của các mục được tải lên thông qua phương thức POST. Trong đó, các file được tải lên sẽ là 1 phần tử trong mảng gồm key là name bạn đặt trong file html và value là một mảng gồm 4 phần tử

  • name: tên file
  • tmp_name: nơi lưu tạm file, nằm bất cứ đâu trong server và tùy thuộc là thiết lập của bạn.
  • error: lỗi xảy ra
  • size: kích thước file, đơn vị là byte.

Xử lý upload file trong php

Form html của chúng ta như sau:

Để upload file, chúng ta sẽ dùng hàm move_uploaded_file($ten_file, $dia_chi_luu_file).

$ten_file: tên ‘tmp_name’ của file được tải tạm lên server.

$dia_chi_luu_file: nơi lưu trữ file upload mà bạn muốn.

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 'uploads/'.basename($_FILES["fileToUpload"]["name"]));

Tất nhiên, chỉ đơn giản như thế thì chúng ta đã có thể upload file. Tuy nhiên, chúng ta hay thử áp dụng $_FILES để xử lý phức tạp hơn một chút quá trình tải file lên.

  • Kiểm tra file trùng
  • Kiểm tra loại file
  • Kiểm tra kích thước file

Nếu thỏa hết tất cả điều kiện sẽ tiến hành upload file. Đầu tiên, chúng ta sẽ xác định nơi lưu file và file chúng ta sẽ xử lý nhé.

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

Kiểm tra file đã tồn tại chưa

Nếu đã tồn tại sẽ bỏ qua. Thật ra, chúng ta có thể xử lý bằng cách đổi tên file nhưng thì làm đơn giản thôi nhé, trường hợp để tên file cách bạn có thể tìm hiểu thêm.

if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
}

Kiểm tra loại file

Chúng ta sẽ kiểm tra loại file bằng cách kiểm tra đuôi file có nằm trong danh sách cho phép tải lên hay không. Trong ví dụ, chúng ta chỉ cho các file png, jpg, jpeg, gif tải lên.

$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Allow certain file formats
if($fileType != "jpg" && $fileType != "png" && $fileType != "jpeg"
&& $fileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $upload_ok = 0;
}

Kiểm tra kích thước file

Chúng ta sẽ xem kích thước file bằng cách truy cập vào key ‘size’

if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
}

Và nếu như thỏa hết, chúng ta chỉ cần dùng hàm move_uploaded_file để lưu trữ.

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);

Tài liệu bài học: Download

Nếu có thắc mắc, hãy đặt câu hỏi bằng cách comment bên dưới, qua email, hoặc nhắn tin qua Fanpage Góc làm web.

Liên hệ

Để lại một trả lời

Địa chỉ email của bạn sẽ không được công bố.