Hướng dẫn php multipart/form-data - php đa phần / biểu mẫu-dữ liệu

Trong bài này, chúng ta sẽ tìm hiểu về cách upload file lên web server trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.cách upload file lên web server trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

Nội dung chính

  • 1. Tạo html form để upload file
  • 2.1. Cấu hình upload file trong php.ini
  • 2.2. Xử lý upload file với PHP
  • 2.3. Lọc (filter) các file được upload
  • 3. Xử lý upload nhiều file với PHP

1. Tạo html form để upload file

2.1. Cấu hình upload file trong php.inienctype.




  Upload file to gochocit.com!




Select a file to upload:


Hướng dẫn php multipart/form-data - php đa phần / biểu mẫu-dữ liệu

2.2. Xử lý upload file với PHP

file_uploads = On
0. Với thuộc tính này, html form cho phép chúng ta upload file lên web server. Thẻ với type=”file” cho phép chúng ta chọn đường dẫn của file cần upload. Sau khi nhấn nút Upload thì dữ liệu trong html form sẽ được gửi đến file upload.php để xử lý.

2.1. Cấu hình upload file trong php.ini

2.2. Xử lý upload file với PHPphp.ini (xem hướng dẫn ở phần Thay đổi default timezone trong PHP), tìm đến cấu hình file_uploads và gán giá trị là On.

file_uploads = On

2.2. Xử lý upload file với PHP

2.3. Lọc (filter) các file được uploadupload.php để xử lý file được upload.


3. Xử lý upload nhiều file với PHP

file_uploads = On
1. Giả sử, chúng ta upload file gochocit.txt như hình bên dưới.

Chúng ta có thể tạo một html form để upload file với thuộc tính enctype.$_FILES là một mảng kết hợp có cấu trúc như sau:

array(1) { 
  ["fileUpload"]=> array(5) { 
    ["name"]=> string(12) "gochocit.txt" 
    ["type"]=> string(10) "text/plain" 
    ["tmp_name"]=> string(24) "C:\xampp\tmp\phpD335.tmp" 
    ["error"]=> int(0) 
    ["size"]=> int(121) 
  } 
}

Trong ví dụ trên, html form có thuộc tính

file_uploads = On
0. Với thuộc tính này, html form cho phép chúng ta upload file lên web server. Thẻ với type=”file” cho phép chúng ta chọn đường dẫn của file cần upload. Sau khi nhấn nút Upload thì dữ liệu trong html form sẽ được gửi đến file upload.php để xử lý.

Để upload file lên web server thì cần đảm bảo cấu hình PHP cho phép upload file. Mở file php.ini (xem hướng dẫn ở phần Thay đổi default timezone trong PHP), tìm đến cấu hình file_uploads và gán giá trị là On.fileUpload: là key của mảng tương ứng name của thẻ

file_uploads = On
2 trong html form

Bên dưới là một đoạn code của file upload.php để xử lý file được upload.name: tên của file được upload.

Khi upload một file lên web server, tất cả thông tin về file sẽ được lưu trữ trong biến

file_uploads = On
1. Giả sử, chúng ta upload file gochocit.txt như hình bên dưới.type: loại file tùy vào đuôi mở rộng của file, có thể là text/plain, image/jpg, image/png,…

Biến $_FILES là một mảng kết hợp có cấu trúc như sau:tmp_name: là file tạm lưu trữ file được upload.

Trong đó,error: mã lỗi khi upload, nếu errror = 0 thì không lỗi.

– fileUpload: là key của mảng tương ứng name của thẻ

file_uploads = On
2 trong html formsize: kích thước file tính bằng byte.

– name: tên của file được upload.

– type: loại file tùy vào đuôi mở rộng của file, có thể là text/plain, image/jpg, image/png,…

– tmp_name: là file tạm lưu trữ file được upload.

– error: mã lỗi khi upload, nếu errror = 0 thì không lỗi.

– size: kích thước file tính bằng byte.

Khi file đã được upload lên server, chúng ta có thể thực hiện các thao tác khác nhau trên file này:

– Kiểm tra file có bị lỗi không?

The uploaded file is error or no file selected.";
            die;
        }

        //2. Kiểm tra loại file upload có được phép không?
        if (!in_array($fileType, $allowtypes )) {
            echo "
Only allow for uploading .txt, .dat or .data files."; $allowUpload = false; } //3. Kiểm tra kích thước file upload có vượt quá giới hạn cho phép if ($_FILES["fileUpload"]["size"] > $maxfilesize) { echo "
Size of the uploaded file must be smaller than $maxfilesize bytes."; $allowUpload = false; } //4. Kiểm tra file đã tồn tại trên server chưa? if (file_exists($target_file)) { echo "
The file name already exists on the server."; $allowUpload = false; } if ($allowUpload) { //Lưu file vào thư mục được chỉ định trên server if (move_uploaded_file($_FILES["fileUpload"]["tmp_name"], $target_file)) { echo "
File ". basename( $_FILES["fileUpload"]["name"])." uploaded successfully."; echo "The file saved at " . $target_file; } else { echo "
An error occurred while uploading the file."; } } } } ?>

2.3. Lọc (filter) các file được upload

3. Xử lý upload nhiều file với PHP

Chúng ta có thể tạo một html form để upload file với thuộc tính enctype. – Sử dụng thuộc tính accept trong thẻ

file_uploads = On
2

Select file to upload:


Trong ví dụ trên, html form có thuộc tính

file_uploads = On
0. Với thuộc tính này, html form cho phép chúng ta upload file lên web server. Thẻ với type=”file” cho phép chúng ta chọn đường dẫn của file cần upload. Sau khi nhấn nút Upload thì dữ liệu trong html form sẽ được gửi đến file upload.php để xử lý. – Upload file rồi kiểm tra loại file với PHP

//Lấy phần mở rộng của file (txt, jpg, png,...)
$fileType = pathinfo($target_file, PATHINFO_EXTENSION);
//Những loại file được phép upload
$allowtypes    = array('txt', 'dat', 'data');
//2. Kiểm tra loại file upload có được phép không?
if (!in_array($fileType, $allowtypes )) {
   echo "
Only allow for uploading .txt, .dat or .data files."; $allowUpload = false; }

3. Xử lý upload nhiều file với PHP

Chúng ta có thể tạo một html form để upload file với thuộc tính enctype. có thuộc tính

file_uploads = On
4. Lưu ý: name của thẻ <input> phải có thêm dấu ngoặc vuông [], thể hiện là một mảng chứa nhiều file.




  Upload multiple files to gochocit.com!




Select one or more files to upload:


Trong ví dụ trên, html form có thuộc tính

file_uploads = On
0. Với thuộc tính này, html form cho phép chúng ta upload file lên web server. Thẻ với type=”file” cho phép chúng ta chọn đường dẫn của file cần upload. Sau khi nhấn nút Upload thì dữ liệu trong html form sẽ được gửi đến file upload.php để xử lý.upload-multiple-files.php để xử lý upload nhiều file. Thông tin về các file sẽ được truy xuất từ $_FILES[‘fileUpload’] dưới dạng các mảng.

Để upload file lên web server thì cần đảm bảo cấu hình PHP cho phép upload file. Mở file php.ini (xem hướng dẫn ở phần Thay đổi default timezone trong PHP), tìm đến cấu hình file_uploads và gán giá trị là On.$_FILES[‘fileUpload’][‘name’]: chứa các tên file được upload.

Bên dưới là một đoạn code của file upload.php để xử lý file được upload.$_FILES[‘fileUpload’][‘type’]: chứa các loại file được upload.

Khi upload một file lên web server, tất cả thông tin về file sẽ được lưu trữ trong biến

file_uploads = On
1. Giả sử, chúng ta upload file gochocit.txt như hình bên dưới.$_FILES[‘fileUpload’][‘tmp_name’]: chứa các vị trí lưu tạm các file.

Biến $_FILES là một mảng kết hợp có cấu trúc như sau:$_FILES[‘fileUpload’][‘error’]: là mảng báo lỗi khi upload.

Trong đó,$_FILES[‘fileUpload’][‘size’]: chứa kích thước các file được upload.

Uploaded file $numfiles:
"; echo "Name: $names[$i]
"; echo "Temporary saved at: $tmp_names[$i]
"; echo "Size: $sizes[$i] bytes

"; } } echo "Number of uploaded files: " .$numfiles; } } ?>

– fileUpload: là key của mảng tương ứng name của thẻ

file_uploads = On
2 trong html form

– name: tên của file được upload.

  • – type: loại file tùy vào đuôi mở rộng của file, có thể là text/plain, image/jpg, image/png,…
  • – tmp_name: là file tạm lưu trữ file được upload.
  • – error: mã lỗi khi upload, nếu errror = 0 thì không lỗi.
  • – size: kích thước file tính bằng byte.
  • Khi file đã được upload lên server, chúng ta có thể thực hiện các thao tác khác nhau trên file này: