Định nghĩa.
Hàm move_uploaded_file()
sẽ kiểm tra để đảm bảo rằng file truyền vào là một file upload hợp lệ( nghĩa là file đã được upload bởi phương thức PHP’s HTTP POST). Nếu file hợp lệ nó sẽ được di chuyển đến thư mục đã truyền vào.
Cú pháp.
Cú pháp:
move_uploaded_file ( string$filename
, string$destination
) : bool
Trong đó.
$filename
là tên file upload.$destination
là thư mục mà file sẽ được chuyển đến.
Giá trị trả về.
- Hàm sẽ trả về True nếu thành công
- Nếu
$filename
không hợp lệ hoặc vì lí do nào đó mà nó không thể di chuyển, hàm sẽ trả về False.
Ví dụ.
Ví dụ # 1 Tải lên nhiều tệp
code.
<?php $uploads_dir = '/uploads'; foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; // basename() may prevent filesystem traversal attacks; // further validation/sanitation of the filename may be appropriate $name = basename($_FILES["pictures"]["name"][$key]); move_uploaded_file($tmp_name, "$uploads_dir/$name"); } } ?>
Ghi chú.
- move_uploaded_file () là cả safe mode và open_basedir nhận biết. Tuy nhiên, các hạn chế chỉ được đặt trên đường dẫn đích để cho phép di chuyển các tệp được tải lên trong đó tên tệp có thể xung đột với các hạn chế đó. move_uploaded_file () đảm bảo sự an toàn của thao tác này bằng cách chỉ cho phép các tệp được tải lên qua PHP được di chuyển.
- Cảnh báo Nếu tệp đích đã tồn tại, nó sẽ bị ghi đè.
Hàm liên quan.
- is_uploaded_file() – Cho biết liệu tệp đã được tải lên qua HTTP POS
- rename() – Đổi tên tệp hoặc thư mục
- Xem Handling file uploads để biết ví dụ sử dụng đơn giản
Thông tin thêm.
- Mẹo bảo mật bạn phải biết trước khi sử dụng chức năng này: + Đầu tiên: đảm bảo rằng tệp không trống. + Thứ hai: đảm bảo tên tệp bằng ký tự tiếng Anh, số và ký hiệu (_-.), Để bảo vệ nhiều hơn Bạn có thể sử dụng chức năng dưới đây như trong ví dụ
<?php /** * Check $_FILES[][name] * * @param (string) $filename - Uploaded file name. * @author Yousef Ismaeil Cliprz */ function check_file_uploaded_name ($filename) { (bool) ((preg_match("`^[-0-9A-Z_\.]+$`i",$filename)) ? true : false); } ?>
+ Thứ ba: đảm bảo rằng tên tệp không lớn hơn 250 ký tự.<?php /** * Check $_FILES[][name] length. * * @param (string) $filename - Uploaded file name. * @author Yousef Ismaeil Cliprz. */ function check_file_uploaded_length ($filename) { return (bool) ((mb_strlen($filename,"UTF-8") > 225) ? true : false); } ?>
+ Thứ tư: Kiểm tra phần mở rộng tệp và loại Mime mà bạn muốn cho phép trong dự án của mình. Bạn có thể sử dụng: pathinfo () http://php.net/pathinfo hoặc bạn có thể sử dụng biểu thức chính quy để kiểm tra Phần mở rộng tệp như trong ví dụ # ^ (gif | jpg | jpeg | jpe | png) $ # i hoặc sử dụng in_array kiểm tra như<?php $ext_type = array('gif','jpg','jpe','jpeg','png'); ?>
+ Thứ năm: Kiểm tra kích thước tệp và đảm bảo giới hạn của php.ini để tải tệp lên là những gì bạn muốn, Bạn có thể bắt đầu từ http://www.php.net/manual/en/ini.core.php#ini.file- tải lên + Và cuối cùng nhưng không kém phần quan trọng: Kiểm tra nội dung tệp nếu có mã xấu hoặc một cái gì đó giống như chức năng này http://php.net/manual/en/feft.file-get-contents.php - Thư mục đích phải tồn tại; move_uploaded_file () sẽ không tự động tạo nó cho bạn.
- Đối với những người sử dụng PHP trên Windows và IIS, bạn NÊN đặt giá trị “upload_tmp_dir” trong php.ini thành một số thư mục xung quanh thư mục trang web của bạn, tạo thư mục đó và sau đó đặt các quyền tương tự trên đó mà bạn đã đặt cho các trang web của mình danh mục. Mặt khác, khi bạn tải lên một tệp và nó đi vào C: \ WINDOWS \ Temp, sau đó bạn di chuyển nó vào thư mục trang web của bạn, quyền của nó sẽ KHÔNG được đặt chính xác. Điều này sẽ gây ra sự cố cho bạn nếu sau đó bạn muốn thao tác với tệp đó bằng tiện ích chuyển đổi của ImageMagick.
Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm move_uploaded_file() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com