- Hàm move_uploaded_file() dùng để di chuyển tập tin được tải lên vào một nơi được chỉ định.(sau khi thực thi xong, hàm này sẽ trả về giá trị TRUE nếu thành công, ngược lại sẽ trả về FALSE) Show - Cú pháp:
- Trong đó:
- Tôi có một cây thư mục như sau:
- Đoạn mã phía dưới là nội dung của tập tin myCode.php
- Cứ mỗi khi tải tập tin lên thì nó sẽ được di chuyển vào bên trong thư mục file Nếu nơi lưu tập tin được tải lên đã tồn tại một tập tin có cùng tên thì tập tin đó sẽ bị ghi đè. Khi thực hiện upload hình ảnh trong PHP bạn sẽ được làm quen với hàm move_uploaded_file. Đây là một hàm quan trọng không thể thiếu. Hãy cùng tìm hiểu về move_uploaded_file trong PHP qua bài viết này. Cú pháp: move_uploaded_file($file_tmp, $destination); Giải thích:
Bước 1: Trước
tiên bạn sẽ cần chuẩn bị một tập tin tên là
Trong đó:
Bước 2: Tiếp theo bạn sẽ tạo ra một file là
Giải thích:
Bước 3: Tạo một thư mục Kết quả sau khi tiến hành upload
Tổng quan về kỹ thuật Upload file trong PHPĐể HTML FORM có thể gửi file lên server (http server) thì form phải có thuộc tính enctype="multipart/form-data", phần tử trong form để chọn và gửi file có dạng <input type="file" name="myfile" ... /> (tức là dùng phần tử <form enctype="multipart/form-data" method="POST"> <input type="file" name="myfile" /> </form> Khi file
Upload lên Server (chạy PHP) thì file sẽ lưu vào một thư mục tạm (temporary directory, như trên Linux đó là /tmp) của hệ thống PHP, và toàn bộ thông tin về file upload sẽ lưu trong biến mảng toàn cục Chúng ta cần đọc thông tin từ Mảng 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
Các thành phần đó là:
Bằng việc đọc Nếu sau khi upload vào thư mục tạm một thời gian (như trên là Tạo form HTML upload fileĐể thực hành upload file trong PHP, trước tiên tạo Có thể tạo file <form action="/upload.php" method="post" enctype="multipart/form-data"> Chọn file để upload: <input type="file" name="fileupload" id="fileupload"> <input type="submit" value="Đăng ảnh" name="submit"> </form> Hiện thị Lưu ý khi tạo form để uplad ảnh (file) thì cần thiết đặt thuộc tính form có: Code PHP xử lý Upload FileCode xử lý upload sau là xử lý chỉ cho upload
các file ảnh, với các loại file là jpg, png, jpeg, gif. File Upload file có cỡ < 0.8 MB. File Upload sẽ lưu vào thư mục Code xử lý upload file để trong file <?php // file upload.php xử lý upload file if ($_SERVER['REQUEST_METHOD'] !== 'POST') { // Dữ liệu gửi lên server không bằng phương thức post echo "Phải Post dữ liệu"; die; } // Kiểm tra có dữ liệu fileupload trong $_FILES không // Nếu không có thì dừng if (!isset($_FILES["fileupload"])) { echo "Dữ liệu không đúng cấu trúc"; die; } // Kiểm tra dữ liệu có bị lỗi không if ($_FILES["fileupload"]['error'] != 0) { echo "Dữ liệu upload bị lỗi"; die; } // Đã có dữ liệu upload, thực hiện xử lý file upload //Thư mục bạn sẽ lưu file upload $target_dir = "uploads/"; //Vị trí file lưu tạm trong server (file sẽ lưu trong uploads, với tên giống tên ban đầu) $target_file = $target_dir . basename($_FILES["fileupload"]["name"]); $allowUpload = true; //Lấy phần mở rộng của file (jpg, png, ...) $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Cỡ lớn nhất được upload (bytes) $maxfilesize = 800000; ////Những loại file được phép upload $allowtypes = array('jpg', 'png', 'jpeg', 'gif'); if(isset($_POST["submit"])) { //Kiểm tra xem có phải là ảnh bằng hàm getimagesize $check = getimagesize($_FILES["fileupload"]["tmp_name"]); if($check !== false) { echo "Đây là file ảnh - " . $check["mime"] . "."; $allowUpload = true; } else { echo "Không phải file ảnh."; $allowUpload = false; } } // Kiểm tra nếu file đã tồn tại thì không cho phép ghi đè // Bạn có thể phát triển code để lưu thành một tên file khác if (file_exists($target_file)) { echo "Tên file đã tồn tại trên server, không được ghi đè"; $allowUpload = false; } // Kiểm tra kích thước file upload cho vượt quá giới hạn cho phép if ($_FILES["fileupload"]["size"] > $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 code trên: Cá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 ) )
Như vậy khi xủ lý upload file, bạn truy cập vào $_FILE và di chuyển file vừa upload từ Kiểm tra file upload có phải là file ảnh (dùng cho trường hợp bạn chỉ cho phép up ảnh) thì đầu tiên gọi Kiểm tra phần mở rộng của tên file: Lấy phần mở rộng NHANH CHÓNG CHẠY THỬ CODE TRÊN Bạn có thể tạo ra một thư mục đặt tên Sau đó vào thư mục php -S 0.0.0.0:8088 -t uploadfile/ Từ trình duyệt truy cập Code PHP Upload nhiều FileTrong
thẻ Ví dụ HTML như sau: <input name="fileupload[]" type="file" multiple="multiple" /> Lúc này tại PHP
Đoạn code sau hiện thị FORM để bạn chọn một lúc nhiều file upload, sau đó code PHP sẽ hiện thị các thông tin về các file mà bạn upload lên. Hãy chạy và chọn thử nhiều file upload để kiểm tra File <?php if (($_SERVER['REQUEST_METHOD'] === 'POST') && (isset($_FILES['fileupload']))) { $files = $_FILES['fileupload']; $names = $files['name']; $types = $files['type']; $tmp_names = $files['tmp_name']; $errors = $files['error']; $sizes = $files['size']; $numitems = count($names); $numfiles = 0; for ($i = 0; $i < $numitems; $i ++) { //Kiểm tra file thứ $i trong mảng file, up thành công không if ($errors[$i] == 0) { $numfiles++; echo "Bạn upload file thứ $numfiles:<br>"; echo "Tên file: $names[$i] <br>"; echo "Lưu tại: $tmp_names[$i] <br>"; echo "Cỡ file: $sizes[$i] <br><hr>"; //Code xử lý di chuyển file đến thư mục cần thiết ở đây (bạn tự thực hiện) //Ví dụ move_uploaded_file($tmp_names[$i], /upload/'.$names[$i]); } } echo "Tổng số file upload: " .$numfiles; } ?> <form method="post" enctype="multipart/form-data"> <p>Chọn file để upload: (Cỡ lớn nhất mà PHP đang cấu hình cho phép upload là <?=ini_get('upload_max_filesize')?>)</p> <input name="fileupload[]" type="file" multiple="multiple" /> <input type="submit" value="Đăng ảnh" name="submit"> </form> Source code: uploadfile (Git), hoặc tải rphp-uploadfile Chạy thử bằng cách để
file này vào thư mục |