-----
Phần 108. Upload
tập tin trong PHP
Trong clip số 16 của thầy Nguyễn Anh Tuấn có phần upload tập
tin, nên sẽ tìm hiểu về cách upload một tập tin lên web server.
Cùng đọc và làm theo hướng dẫn của tác giả Trần Nam tại đây:
http://kienthucweb.net/huong-dan-lap-trinh-xu-ly-upload-file-trong-php.html
Ghi lại một số ý để tiện tham khảo.
Bật chức năng cho phép upload tập tin của PHP:
- Mở tập tin php.ini
- Thiết lập cho hàng file_uploads giá trị là On,
“file_upload = On”
Tạo một form, trong đó có chức năng upload tập tin.
<form
action="upload.php" method="POST"
enctype="multipart/form-data">
Tập
tin: <input type="file" name="uploadFile"><br>
<input
type="submit" value="Tải lên">
</form>
Lưu ý: form phải có thêm thuộc tính enctype=“multipart/form-data”.
Enctype là viết tắt của encoded type.
Chưa biết cách làm sao để chuyển “Choose File và No file
chosen” ở phần hiển thị sang tiếng Việt.
Ở ví dụ này, sau khi người dùng chọn một tập tin và bấm nút
“Tải lên”, trang upload.php sẽ nhận được các thông tin của tập tin vừa được
gửi, các thông tin này chứa trong biến $_FILES, gồm:
- $_FILES[‘uploadFile][‘name’]: tên tập tin
- $_FILES[‘uploadFile][‘type’]: định dạng của tập tin
- $_FILES[‘uploadFile][‘name’]: kích thước của tập tin, tính
bằng byte
Các bước xử lý khi upload một tập tin gồm:
- Kiểm tra biến $_POST xem người dùng đã bấm nút “Tải lên”
chưa?
- Kiểm tra biến $_FILES xem người dùng đã chọn tập tin ở máy
tính chưa?
- Kiểm soát loại tập tin tải lên, để đảm bảo an toàn cho ứng
dụng.
- Chuyển tập tin ở nơi chứa tạm về vị trí mong muốn.
Ví dụ sau chỉ cho phép người dùng tải tập tin ảnh, có kích
thước không vượt quá 2MB.
Cần tạo sẵn thư mục images trên web server. Ở ví dụ này, thư
mục images cùng cấp với tập tin upload.php.
Lưu lại đoạn mã để tham khảo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>Upload
file</title>
</head>
<?php
if(isset($_POST['submit'])){
//Đã bấm submit
if($_FILES['uploadFile']['name']
!= NULL){ //Đã chọn tập tin
//Tiến
hàng upload tập tin
if($_FILES['uploadFile']['type']
== 'image/jpeg'
||
$_FILES['uploadFile']['type'] == 'image/png'
||
$_FILES['uploadFile']['type'] == 'image/gif'){
//Là
tập tin ảnh
if($_FILES['uploadFile']['size']
> 2097152){
echo
'Tập tin không được lớn hơn 2MB!';
}else{
//Tập
tin hợp lệ, tiến hành upload
$path
= 'images/'; //Thư mục sẽ chứa các tập tin
$tmp_name
= $_FILES['uploadFile']['tmp_name']; //Lấy đường dẫn tạm của tập tin
$name
= $_FILES['uploadFile']['name'];
$type =
$_FILES['uploadFile']['type'];
$size
= $_FILES['uploadFile']['size'];
//Chuyển
tập tin từ thư mục tạm về thư mục mong muốn
move_uploaded_file($tmp_name,
$path.$name);
echo
'Tải tập tin thành công! <br>';
echo
'Tên tập tin: '.$name.'<br>';
echo
'Định dạng: '.$type.'<br>';
echo
'Kích thước: '.$size.' MB';
}
}else
{
echo
'Tập tin phải là hình ảnh!';
}
}else{
echo
'Vui lòng chọn tập tin!';
}
}
?>
<body>
<form
action="upload.php" method="POST"
enctype="multipart/form-data">
Tập
tin: <input type="file" name="uploadFile"
id="uploadFile" text="HI"><br>
<input
type="submit" value="Tải lên" name="submit">
</form>
</body>
</html>
-----------
Cập nhật 20/2/2017
-----------