-----
Phần 83. Upload
tập tin
Đây là clip số 93:
Để tải một tập tin từ máy người dùng lên server (upload) cần
thực hiện các bước sau:
- Chuẩn bị tập tin để tải lên
- Tạo một form bằng HTML, thẻ <form> phải có thuộc
tính [enctype=“multipart/form-data”]
- Form phải có một input với
[type=“file”][name=“fileUpload”]
- Sau khi bấm nút Submit, sẽ kiểm tra biến
$_FILE[‘fileUpload’] trên server để có được các thông tin của tập tin đã được
tải lên
- Sau khi bấm nút Submit, phần nội dung của tập tin cũng
được gửi lên server
- Tại server:
+ Tập tin được lưu vào bộ nhớ tạm, với tên là *.tmp
+ Di chuyển tập tin tạm vào thư mục mong muốn
+ Đổi tên tập tin tạm thành tên mới như mong muốn
Các thông tin có trong biến $_FILE[‘fileUpload’]:
- $_FILE[‘fileUpload’][‘name’]: tên ban đầu của tập tin được
tải lên server
- $_FILE[‘fileUpload’][‘size’]: kích thước của tập tin
- $_FILE[‘fileUpload’][‘type’]: kiểu của tập tin
- $_FILE[‘fileUpload’][‘tmp_name’]: tên tập tin tạm, chứa
nội dung của tập tin được tải lên server (tuy nhiên sau khi submit, tìm kiếm
thử tập tin này trên server thì không thấy, lý do: tập tin này bị xóa ngay khi
đoạn mã về upload tập tin thực hiện xong?).
- $_FILE[‘fileUpload’][‘error’]: thông báo lỗi khi tải tập
tin
Đoạn mã ví dụ:
[index.php]
<!DOCTYPE html>
<html lang="en">
<head>
<meta
charset="UTF-8">
<title>PHP</title>
</head>
<body>
<?php
if
(isset($_FILES['fileUpload'])) {
$fileUpload = $_FILES['fileUpload'];
if ($fileUpload['name']
!= null) {
$fileNameTmp =
$fileUpload['tmp_name'];
$destination =
'./files/' . $fileUpload['name'];
if
(move_uploaded_file($fileNameTmp, $destination)) {
echo 'upload
succeeded!';
} else {
echo 'upload
failed!';
}
}
}
?>
<form
action="#" method="post"
enctype="multipart/form-data">
<input
type="file" name="fileUpload">
<input
type="submit" value="Submit">
</form>
</body>
</html>
Thực hiện upload tập tin với tên mới để tránh tình trạng ghi
đè.
[index.php]
Sửa lại đoạn mã như sau:
// tạo tên tập tin ngẫu
nhiên
function
randomString($length = 5) {
// tạo ra một mảng gồm
các kí tự AZaz09
$arrChar =
array_merge(range('A', 'Z'), range('a', 'z'), range('0', '9'));
// chuyển mảng thành
chuỗi
$chars =
implode($arrChar, '');
// đảo chuỗi ngẫu nhiên
$chars =
str_shuffle($chars);
$result =
substr($chars, 0, 5);
return $result;
}
if
(isset($_FILES['fileUpload'])) {
$fileUpload =
$_FILES['fileUpload'];
if ($fileUpload['name']
!= null) {
$fileNameTmp =
$fileUpload['tmp_name'];
$random =
randomString(5);
$destination =
'./files/' . $random . '_' . $fileUpload['name'];
if
(move_uploaded_file($fileNameTmp, $destination)) {
echo 'upload
succeeded!';
} else {
echo 'upload
failed!';
}
}
}
-----------
Cập nhật [16/9/2020]
-----------
Xem thêm: