Một PHP script có thể sử dụng với một HTML form cho phép người dùng upload file lên Server. Đầu tiên các file này được upload lên một thư mục tạm thời, sau đó được di chuyển tới một đích bởi một PHP script.
Thông tin trong trang phpinfo.php mô tả thư mục tạm thời mà được sử dụng cho các file được upload ở dạng upload_tmp_dir và kích thước giới hạn của các file có thể được upload được bắt đầu ở dạng upload_max_filesize. Các tham số này được thiết lập trong file cấu hình php.ini.
Tiến trình upload một file theo các bước sau:
Thông thường khi ghi các file, nó là cần thiết cho cả thư mục tạm thời và thư mục đích để có quyền truy cập được thiết lập là cho phép ghi. Nếu một trong 2 được thiết lập là read-only, thì tiến trình sẽ thất bại.
Một file được upload lên có thể là text file hoặc image file hoặc bất cứ tài liệu nào.
Dưới đây là HTML code tạo một upload form. Form này có thuộc tính method được thiết lập là post và thuộc tính enctype thiết lập là multipart/form-data
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$expensions= array("jpeg","jpg","png");
if(in_array($file_ext,$expensions)=== false){
$errors[]="Không chấp nhận định dạng ảnh có đuôi này, mời bạn chọn JPEG hoặc PNG.";
}
if($file_size > 2097152){
$errors[]='Kích cỡ file nên là 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Thành công!!!";
}
else{
print_r($errors);
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</body>
</html>
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:
Có một biến PHP toàn cục là $_FILES. Biến này là một mảng mảng liên hợp và giữ tất cả thông tin liên quan đến file được tải lên. Vì vậy, nếu giá trị gán cho thuộc tính name của input trong form upload là file, khi đó PHP có thể tạo 5 biến sau:
Dưới đây là ví dụ cho phép tải các hình ảnh và trả về kết quả ở dạng thông tin file đã được tải lên.
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$expensions= array("jpeg","jpg","png");
if(in_array($file_ext,$expensions)=== false){
$errors[]="Không chấp nhận định dạng ảnh có đuôi này, mời bạn chọn JPEG hoặc PNG.";
}
if($file_size > 2097152){
$errors[]='Kích cỡ file nên là 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Thành công!!!";
}
else{
print_r($errors);
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
<ul>
<li>Gửi file có tên: <?php echo $_FILES['image']['name']; ?>
<li>Kích cỡ file : <?php echo $_FILES['image']['size']; ?>
<li>Kiểu file : <?php echo $_FILES['image']['type'] ?>
</ul>
</form>
</body>
</html>
Kết quả sẽ có dạng giống như: