Thứ Năm, 30 tháng 6, 2016

Upload file trong PHP

Qua bài trước mình đã giới thiệu cho các bạn về Form và các phương thức POST và GET trong form,sang bài này chúng ta sẽ thực hành sang chức năng rất quan trọng đó chính là Upload file trong PHP.Đây là chức năng mà hầu như website nào cũng cần phải có.Ví dụ như khi chúng ta viết bài,bán sản phẩm thì đều cần ảnh minh họa cho bài viết hoặc sản phẩm.
– Để upload được file, chúng ta cần thêm thuộc tính enctype=”multipart/form-data” cho form, ta dùng thẻ input type=”file” để upload file
– Sau đây chúng ta sẽ tạo 1 form để thực hiện chức năng tải file lên:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
   <!-- the head -->
   <head>
      <meta http-equiv="Content-Type" content="text/html ;charset=utf-8" />
   </head>
   <body>
       <h1>Upload file</h1>
       <form method="post" action="upload.php" enctype="multipart/form-data">
                <label>Ảnh minh họa:</label>
                <input type="file"  id="image" name="image">
                <br />
                <input type="submit" class="button" value="Upload" name='submit' />
        </form>
   </body>
</html>
Và sẽ được kết quả như sau:
Form upload file
Form upload file
– Các bạn thấy form trên có thuộc tính action="upload.php",như vậy khi form được submit toàn bộ dữ liệu trong form sẽ được gửi tới trang upload.php theo phương thức POST
Bây giờ chúng ta sẽ thực hiện viết code xử lý dữ liệu trong file upload.php như sau:
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_POST['submit']))
{
      //thực hiện upload
}
else
{
      echo "Vui lòng chọn hình ảnh trước";
}
?>
+ Hàm isset() là hàm kiểu tra sự tồn tại của biến nào đó, Với đoạn code trên trước tiên chúng ta cần kiểm tra xem người dùng đã ấn nút submit form chưa thông qua câu điều kiện isset($_POST['submit'])
– Để upload file từ máy lên hệ thống ta cần sử dụng hàm:
1
move_uploaded_file(tên_file_tạm, đường dẫn tới hệ thống).
– Khi thực hiện upload hệ thống sẽ tự sinh ra 1 biến môi trường có tên là $_FILES[‘image'] ,đây là biến chứa mảng thông tin của file upload lên nó bao gồm các thông tin sau:
  1. $_FILES['image']['name']: tên file
  2. $_FILES['image'][‘tmp_name']: tên file tạm (sẽ mất đi khi upload thành công),và đây chính là tham số thứ nhất đựoc truyền vào trong hàm move_uploaded_file ở trên
  3. $_FILES['image']['type']: Kiểu của file,dựa vào biến này để kiểm tra các file được phép tải lên
  4. $_FILES['image']['size']: kích thước của file (byte),dựa vào biến này để kiểm tra dung lượng tối đa được phép tải lên
– Để thực hiện kiểm tra điều kiện file tải lên chỉ là file ảnh ta có thể dựa vào biến $_FILES['image']['type'] và kiểm tra như sau:
1
2
3
4
5
6
7
8
9
10
11
<?php
  if($_FILES['file']['type'] == "image/jpeg"
      || $_FILES['file']['type'] == "image/png"
      || $_FILES['file']['type'] == "image/gif"){
      // là file ảnh
      // Thực hiện upload
  }else{
      // không phải file ảnh
      echo "Kiểu file không hợp lệ";
  }
?>
– Để thêm điều kiện giới hạn dung lượng tối đa của file upload lên ta dựa vào biến $_FILES['image']['size'] và sẽ kiểm tra như sau,ví dụ ta giới hạn dung lượng tối đa là 1MB ta kiểm tra như sau (ví file size tính theo byte lên ta đổi (1MB = 1*1024 kb * 1024 bytes = 1048576) ):
1
2
3
4
5
6
<?php
  if($_FILES['file']['size'] > 1048576){
     echo "File không được lớn hơn 1mb";
  }else{
     //dung lượng hợp lệ,thực hiện code upload
  }
Như vậy sau khi đã có đầy đủ các thông tin cho việc tải file lên chúng ta sẽ có đoạn code đầy đủ như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
if(isset($_POST['submit'])){ // Người dùng đã ấn submit
    if($_FILES['file']['name'] != NULL){ // Đã chọn file
        // Tiến hành code upload file
        if($_FILES['file']['type'] == "image/jpeg"
        || $_FILES['file']['type'] == "image/png"
        || $_FILES['file']['type'] == "image/gif"){
        // là file ảnh
        // Tiến hành code upload  
            if($_FILES['file']['size'] > 1048576){
                echo "File không được lớn hơn 1mb";
            }else{
                // file hợp lệ, tiến hành upload
                $path 'upload/'.$_FILES['file']['name']; // Đường dẫn chưa file upload
                // Gọi hàm upload file
                move_uploaded_file($_FILES['file']['tmp_name'], $path);
                echo "Upload thành công <br />";
                echo "Tên file : ".$name."<br />";
                echo "Kiểu file : ".$_FILES['file']['type']."<br />";
                echo "File size : ".$_FILES['file']['size'];
           }
        }else{
           // không phải file ảnh
           echo "Kiểu file không hợp lệ";
        }
   }else{
        echo "Vui lòng chọn file";
   }
}
?>
Kết thúc bài viết: Qua bài này các bạn đã có thể tự tạo ra chức năng upload ảnh minh họa cho sản phẩm rồi,các bạn có thể lưu lại tên file ảnh vào CSDL để sau này hiển thị ra.Sang bài sau mình sẽ hướng dẫn cho các bạn 1 phần rất quan trọng trong lập trình php,đó chính là mảng.
- See more at: http://hocphp.info/upload-file-trong-php/#sthash.pWNzM5bN.dpuf

Không có nhận xét nào:

Đăng nhận xét

Cách tạo logo online bằng Design Rails

Ngoài việc  download AAA Logo  về cài đặt và tự tạo một logo thì việc tạo ngay các logo trực tuyến đơn giản và dễ dàng với Design Rails. Đâ...