| Diễn Đàn Tin Học | Tutorial Room |
TẠO FORM ĐỂ UPLOAD FILE
Form để upload file cần thoã mãn các điều kiện sau:
Mã HTML của form sẽ từa tựa như sau:
<form method="POST" enctype="multipart/form-data" action="process_upload.php"> <input type="hidden" name="MAX_FILE_SIZE" value="30000"> <input type="file" name="file_upload" size="20"> <input type="submit" value="Upload"> </form>
Đoạn code trên sẽ tạo 1 form với 1 nút Browse... để ban chọn file cần upload, và 1 nút Upload để bạn submit form. Form sẽ được submit tới file process_upload.php nằm cùng thư mục với file chứa form.
Một số browser support MAX_FILE_SIZE sẽ kiểm tra dung lượng file trước khi form được submit, tuy nhiên không phải browser nào cũng vậy. Cho nên bạn đừng nên tin tưởng tuyệt đối vào server! Ở ví dụ trên, nếu browser hỗ trợ, nhưng file có dung lượng lớn hơn 30000 byte sẽ được browser thông báo lỗi khi submit form.
XỬ LÝ DỮ LIỆU ĐƯỢC SUBMIT LÊN SERVER
Bây giờ ta hãy xem xét tới phần xử lý dữ liệu được submit lên server trong file process_upload.php. PHP lưu thông tin về file được upload lên server trong biến global $_FILES. Với form ở ví dụ trên, PHP sẽ truyền cho script process_upload.php các thông tin sau:
Khi đã có toàn bộ các thông tin cần thiết, xử lý file như thế nào là quyến định của bạn. Bạn có thể đọc nội dung của file và lưu vào database, hoặc di chuyển file và lưu vào thư mục upload của bạn. Sau đây là 1 ví dụ của file process_upload.php.
Đầu tiên, kiểm tra xem tác vụ có phải là upload hay không:
if ( $_SERVER["REQUEST_METHOD"] != "POST" ) { //thông báo lỗi không phải là method POST //và thoát exit(-1); } //end if
Tiếp theo kiểm tra xem quá trình upload có lỗi gì không:
if ( !isset($_FILES["file_upload"]["error"] || $_FILES["file_upload"]["error"] != 0 ) { //thông báo lỗi dựa vào giá trị của $_FILES["file_upload"]["error"] //và thoát exit(-1); } //end if //ta cũng có thể kiểm tra xem dung lượng file có vượt quá giới hạn //của chương trình hay không if ( $_FILES["file_upload"]["size"] > $MAX_FILE_SIZE ) { //thông báo lỗi //và thoát exit(-1); }
Tách tên file từ client:
$temp = preg_split('/[\/\\\\]+/', $_FILES["file_upload"]["name"]); $filename = $temp[count($temp)-1]; //ta cũng có thể kiểm tra phần mở rộng của file nếu cần thiết if ( !preg_match('/\.(gif|jpg)$/i', $filename ) { //thông báo lỗi file upload không phải là dạng GIF hoặc JPG //và thoát exit(-1); } //end if
Và cuối cùng, lưu file được upload vào nơi cần thiết:
$upload_dir = "/home/nbthanh/public_html/uploads/"; $upload_file = $uploaddir . $filename; if ( move_uploaded_file($_FILES["file_upload"]["tmp_name"], $upload_file) ) { //file đã được upload và copy sang thư mục lưu trữ thành công } else { //có lỗi xảy ra } //end if
CÁC HÀM PHP ĐƯỢC DÙNG TRONG VÍ DỤ
TÀI LIỆU THAM KHẢO
(C) Diendantinhoc.net. All rights reserved.
Nếu bạn phát hiện lỗi, hoặc góp ý về bài viết, xin hãy gởi email về Nguyễn Bá Thành <btnguyen2k@yahoo.com>
lược xem "Tự học PHP qua ví dụ".