Tập tin đầu vào html

To HTML FORM could send file up server (http server), form must have octype enctype="multipart/form-data", phần tử trong biểu mẫu để chọn và gửi file có dạng (tức là sử dụng phần tử _______ với thuộc tính . Tóm tắt cấu trúc là

    

Khi tệp Tải lên Máy chủ (chạy PHP), tệp sẽ được lưu vào một thư mục tạm thời (thư mục tạm thời, như trên Linux đó là /tmp) của hệ thống PHP, và toàn bộ thông tin về tệp tải lên sẽ được lưu trong mảng toàn cục

Chúng ta cần đọc thông tin từ

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
0 để nhanh chóng di chuyển tệp được tải lên thư mục tạm thời vào nơi lưu trữ lâu dài (nếu không có lý do gì, thì sau một khoảng thời gian tệp này sẽ bị xóa)

Biến

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
0 khi var_dump có cấu trúc như sau

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18

Các thành phần đó là

  • tập tin của tôi. mảng number only tương ứng với tên phần tử đầu vào, tệp tải lên
  • Tên. tên gốc (ban đầu) của tập tin
  • loại. file type (phần mở rộng tùy chọn có thể là
    array (size=1)
        'myfile' =>
            array (size=5)
                'name' => string 'somefile.txt' (length=12)
                'type' => string 'text/plain' (length=10)
                'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
                'error' => int 0
                'size' => int 18
    
    3,
    array (size=1)
        'myfile' =>
            array (size=5)
                'name' => string 'somefile.txt' (length=12)
                'type' => string 'text/plain' (length=10)
                'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
                'error' => int 0
                'size' => int 18
    
    4,
    array (size=1)
        'myfile' =>
            array (size=5)
                'name' => string 'somefile.txt' (length=12)
                'type' => string 'text/plain' (length=10)
                'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
                'error' => int 0
                'size' => int 18
    
    5. )
  • tmp_name. nơi lưu tập tin tạm thời tải lên, nếu muốn di chuyển nó ra khỏi thư mục tạm thời sử dụng hàm
    array (size=1)
        'myfile' =>
            array (size=5)
                'name' => string 'somefile.txt' (length=12)
                'type' => string 'text/plain' (length=10)
                'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
                'error' => int 0
                'size' => int 18
    
    6
  • lỗi. error code, if this code by 0 is not error
  • kích thước. kích thước tệp (byte)

Bằng cách đọc

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
0 bạn sẽ biết các thông tin về tệp được tải lên, nơi tệp đang được lưu tạm thời, bạn cần phải xử lý bằng các hàm PHP để di chuyển tệp ra một vị trí theo cấu trúc thư mục của ứng dụng

Nếu sau khi tải lên thư mục tạm thời một thời gian (như trên là

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
8) một thời gian (do cấu hình hệ thống) mà bạn không di chuyển nó đến vị trí thích hợp, nó sẽ tự động bị xóa

Tạo biểu mẫu tệp tải lên HTML

Để thực hiện hành động tải lên tệp trong PHP, trước khi tạo

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
9 cho phép người dùng chọn tệp và gửi tệp đó lên máy chủ. Giả sử mã PHP để xử lý tải lên các tệp hình ảnh nằm ở
    Chọn file để upload:
    
    
0, bạn có thể xây dựng
array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
9 như sau

Có thể tạo tệp

    Chọn file để upload:
    
    
2

    Chọn file để upload:
    
    

Show

array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
9 has format

Lưu ý khi tạo biểu mẫu để tải ảnh (tệp) lên thì cần thiết phải đặt thuộc tính biểu mẫu có

    Chọn file để upload:
    
    
4
Phần tử được chọn trong biểu mẫu là input với kiểu type="file"
Tên phần tử là
    Chọn file để upload:
    
    
7

Code PHP xử lý Upload File

Sau mã xử lý tải lên là xử lý chỉ để tải lên các tệp ảnh, với các loại tệp là jpg, png, jpeg, gif. Tệp Tải lên tệp có kích thước < 0. 8 MB. Tải lên tệp sẽ lưu vào thư mục

    Chọn file để upload:
    
    
8

Mã xử lý tệp tải lên để trong tệp

    Chọn file để upload:
    
    
9 có nội dung như sau

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>

Giải thích mã trên

Các

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
0 mà
array (size=1)
    'myfile' =>
        array (size=5)
            'name' => string 'somefile.txt' (length=12)
            'type' => string 'text/plain' (length=10)
            'tmp_name' => string '/tmp/phpDC66.tmp' (length=16)
            'error' => int 0
            'size' => int 18
9 nên tải lên HTML, được PHP lưu trong một thư mục tạm thời hệ thống, và tất cả các thông tin về tệp được lưu trong biến mảng
 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
2, cấu trúc biến biến này như sau

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
3 tên khóa tương ứng với tên phần tử của tệp tải lên biểu mẫu, ví dụ trên là
    Chọn file để upload:
    
    
7

Như vậy khi xủ lý tải lên tệp, bạn truy cập vào $_FILE và di chuyển tệp vừa tải lên từ

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
5 sang vị trí mới mà bạn muốn lưu lại
 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
6 bằng hàm
 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
7

Kiểm tra tệp tải lên có phải là tệp ảnh (sử dụng trường hợp bạn chỉ cho phép tải lên ảnh), trước tiên hãy gọi

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
8 để xem kích thước ảnh, nếu hàm phân tích có nghĩa là ảnh, ngược lại là một loại tệp khác

Kiểm tra phần mở rộng của tên tệp. Lấy phần mở rộng

 $maxfilesize)
  {
      echo "Không được upload ảnh lớn hơn $maxfilesize (bytes).";
      $allowUpload = false;
  }


  // Kiểm tra kiểu file
  if (!in_array($imageFileType,$allowtypes ))
  {
      echo "Chỉ được upload các định dạng JPG, PNG, JPEG, GIF";
      $allowUpload = false;
  }


  if ($allowUpload)
  {
      // Xử lý di chuyển file tạm ra thư mục cần lưu trữ, dùng hàm move_uploaded_file
      if (move_uploaded_file($_FILES["fileupload"]["tmp_name"], $target_file))
      {
          echo "File ". basename( $_FILES["fileupload"]["name"]).
          " Đã upload thành công.";

          echo "File lưu tại " . $target_file;

      }
      else
      {
          echo "Có lỗi xảy ra khi upload file.";
      }
  }
  else
  {
      echo "Không upload được file, có thể do file lớn, kiểu file không đúng ...";
  }
?>
9 rồi so sánh với các mẫu cho phép

NHANH CHÓNG CHẠY THỬ MÃ TRÊN

Bạn có thể tạo ra một thư mục đặt tên là

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
0, để trong đó có 2 tệp
    Chọn file để upload:
    
    
2 và
    Chọn file để upload:
    
    
9 ở trên, trong thư mục này tạo thư mục con
    Chọn file để upload:
    
    
8 để lưu tệp - cấu trúc này như tại đây. cập nhật dử liệu

Sau đó vào thư mục

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
0 và nhập lệnh chạy Server HTTP của PHP

php -S 0.0.0.0:8088 -t uploadfile/

Từ duyệt truy cập

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
5 để chạy thử

Code PHP Upload nhiều File

Trong thẻ

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
6 nếu có thuộc tính
$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
7 và tên phần tử chỉ ra là mảng, thì cho phép chọn một lúc nhiều tệp để tải lên

Ví dụ HTML as after

Lúc này tại PHP

$_FILE = Array
    (
        [file1] => Array
            (
                [name] => 'test2.txt';//một tên file người dùng upload
                [type] => text/plain  (kiểu nội dung file text)
                [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                [size] => 123   (kích thước file - bype)
            )

        [file2] => Array
            (
                [name] => test.jpg
                [type] => image/jpeg
                [tmp_name] => /tmp/php/php6hst32
                [error] => UPLOAD_ERR_OK
                [size] => 98174
            )
    )
8 mỗi thành phần sau đều là mảng chứa số lượng tương ứng của tệp tải lên

  • $_FILE = Array
        (
            [file1] => Array
                (
                    [name] => 'test2.txt';//một tên file người dùng upload
                    [type] => text/plain  (kiểu nội dung file text)
                    [tmp_name] => /tmp/php/php1h4j1 //vị trí lưu file tạm thời trên server.
                    [error] => UPLOAD_ERR_OK (= 0 là không lỗi)
                    [size] => 123   (kích thước file - bype)
                )
    
            [file2] => Array
                (
                    [name] => test.jpg
                    [type] => image/jpeg
                    [tmp_name] => /tmp/php/php6hst32
                    [error] => UPLOAD_ERR_OK
                    [size] => 98174
                )
        )
    
    9 bao gồm các tên tệp tải lên (lên 3 tệp thì là mảng 3 tên phần tử)
  • php -S 0.0.0.0:8088 -t uploadfile/
    0 file type
  • php -S 0.0.0.0:8088 -t uploadfile/
    1 chứa các vị trí lưu tập tin tạm thời
  • php -S 0.0.0.0:8088 -t uploadfile/
    2 mảng báo lỗi
  • php -S 0.0.0.0:8088 -t uploadfile/
    3 file size

Đoạn mã sau biểu mẫu để bạn chọn một lúc nhiều tệp tải lên, sau đó mã PHP sẽ hiển thị các thông tin về các tệp mà bạn tải lên. Vui lòng chạy và chọn thử tải lên nhiều tệp để kiểm tra