BASIC TO ADVANCE

Bài 18: Upload file trong PHP

Bài trước mình đã giới thiệu với mọi người khá là nhiều hàm xử file trong PHP và tiếp tự với file trong PHP thì bài này mình sẽ giới hướng dẫn mọi người upload file trong PHP.

1, Chuẩn bị.

-Để có thể upload được file thì mọi người chuẩn bị cho mình một form như sau:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>upload file- toidicode.com</title>
    <link rel="stylesheet" href="">
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUpload" value="">
    <input type="submit" name="up" value="Upload">
</form>
</body>
</html>

Trong đó chú ý: Để có thể gửi được dữ liệu dạng file lên trên server thì bạn cần phải sử dụng phương thức POST và có thuộc tính enctype="multipart/form-data" . Trường input type='file' cho phép chúng ta chọn file để upload.

2, Lý thuyết.

-Cũng giống như get và post thì ở đây server nhận dữ liệu file gửi lên bằng biến $_FILES, biến $_FILES này là một mảng 2 chiều có dạng.

$_FILES['nameInputFile']['properties']

Trong đó:

  • nameInputFile: là name của input file mà các bạn đặt ở form.
  • properties: Bao gồm 5 thuộc tính sau đây:
    1. name: Tên của file các bạn vừa upload lên.
    2. type: Kiểu dữ liệu của file
    3. tmp_name: Đường dẫn tạm của file ở trên server.
    4. error: Trạng thái của file. 0 là không có lỗi (xem thêm)
    5. size: Dung lượng của file ở đây đơn vị là bytes.

-Và upload hoàn tất thì chúng ta dùng hàm move_uploaded_file() với cú pháp:

move_uploaded_file(filename, destination)

Trong đó:

  • filename: là đường dẫn đến file tạm thời ở trên server
  • destination: là đường dẫn chứa file được lưu trữ.

3, Thực hành.

-Lôi thôi một vòng lý thuyết chán quá đúng không nào? Phần này chúng ta sẽ thực hành upload file đơn giản với form ở phần 1 nhé.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>upload file- toidicode.com</title>
    <link rel="stylesheet" href="">
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="fileUpload" value="">
    <input type="submit" name="up" value="Upload">
</form>
<?php
if (isset($_POST['up']) && isset($_FILES['fileUpload'])) {
    if ($_FILES['fileUpload']['error'] > 0)
        echo "Upload lỗi rồi!";
    else {
        move_uploaded_file($_FILES['fileUpload']['tmp_name'], 'upload/' . $_FILES['fileUpload']['name']);
        echo "upload thành công <br/>";
        echo 'Dường dẫn: upload/' . $_FILES['fileUpload']['name'] . '<br>';
        echo 'Loại file: ' . $_FILES['fileUpload']['type'] . '<br>';
        echo 'Dung lượng: ' . ((int)$_FILES['fileUpload']['size'] / 1024) . 'KB';
    }
}
?>
</body>
</html>

-Chú thích: Phần trên mình đã upload file vào thư mục upload và cho hiện ra thông số của file.

4, Bài tập.

-Từ bài thực hành ở phần 3 các bạn về có thể ràng buộc thêm về giới hạn dung lượng file và file được up phải là file ảnh(.jpg, .png, .bmp).

-Mình sẽ chữa ở một thời gian gần nhất.

5, Lời kết.

-Như vậy qua bài hôm nay mình đã giới thiệu với mọi người về cách upload file trong PHP rồi. Bài tiếp theo chúng ta sẽ tìm hiểu về một số hàm kiểm tra kiểu dữ liệu trong PHP.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

6 Comments

em cũng đang làm  file upload ảnh trong php mà nó báo lỗi :

file xử lý:
   

<?php 
   if (isset($_POST['upload'])){
        $id=$_GET['id'];
     foreach ($_FILES['file']['name'] as $i => $name){
        $name = $_FILES['file']['name'][$i];
        $type = $_FILES['file']['type'][$i];
        $size = $_FILES['file']['size'][$i];
        $tmp = $_FILES['file']['tmp_name'][$i];
        $explode=explode('.',$name);
       echo  $ext= end($explode);

        $thongbao = array();
      }
       if (empty($tmp)) {
        echo $thongbao[]='Vui lòng chọn ít nhất 1 ảnh';
     }
     else{
       $chophep= array('jpeg','jpg','gif','png','bmp');
       $max_size = 4000000;
     }
   }
 ?>
file input file
  <form action="modules/bosuutap/xuly.php?id=<?php echo $id ?>" method="POST" enctype="multipart/form=data">
     <input type="file" name="file[]" multiple="multiple">
     <input type="submit" name="upload"  value="Upload">
 </form>
Lỗi như này ạ

Notice: Undefined index: file in C:\xampp\htdocs\websitebanhang\admincp\modules\bosuutap\xuly.php on line 4

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\websitebanhang\admincp\modules\bosuutap\xuly.php on line 4
Vui lòng chọn ít nhất 1 ảnh


  

cong

3 năm trước

Thay đoạn này:

multipart/form=data

bằng:

multipart/form-data

Nhé bạn! 

Vũ Thanh Tài

3 năm trước

a cho e hỏi với ạ.Của e upload file nhưng file đó lại không có trong thư mục mà e upload lên ạ.

Đỗ Thị Hồng

2 năm trước

Đường dẫn lên server sai. Coi lại cấu trúc cây thư mục

Nguyễn Thành Nhân

2 năm trước

Tại sao khi em thử upload video, nó báo câu lệnh này là sao ạ!

Warning: POST Content-Length of 13256322 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

Nguyễn Quốc Huy

1 năm trước

Google dịch bảo: POST Nội dung - Độ dài 13256322 byte vượt quá giới hạn 8388608 byte không xác định trên dòng 0

Lê Thị Hoa Quyên

5 tháng trước

Bình luận

Captcha