Tạo trang upload file cơ bản

Published by admin on

Thông thường để upload file lên host của bạn thì bạn cần phải sử dụng các thông tin mật (user, pwd) để truy nhập vào FTP (thông qua trình duyệt web hoặc một chương trình hỗ trợ upload nào đó…) rồi mới có thể upload lên host của bạn, nhưng với bài viết này mình sẽ hướng dẫn bạn cách tạo một trang upload có thể upload mà không cần phải sử dụng các thông tin mật đó!

Để tạo được một trang upload cơ bản bạn cần làm 2 bước sau:

1. Tạo FORM – HTML:

Phần này bạn chỉ cần lưu ý ở thẻ input, thay vì bạn thiết lập typetext (dạng nội dung) hay password (dạng mật khẩu ******) thì bạn phải thiết lập lại là file.

Tạo file upload.php có nội dung sau:

 
<form action=”upload.php?act=do” enctype=”multipart/form-data” method=”post”>
Upload file: <input type=”file” name=”file_upload”>
<input type=”submit” name=”submit” value=” G&#7917;i file “>
</form>
2. Xử lý thông tin và upload file – PHP

Lần lượt add các thông tin này vào file upload.php nhưng phải add ở trên đoạn HTML đấy nhé :p

Cấu hình:

$file_max_size = 1000; // Tính theo KB
$folder_upload_in = “./”; // Thư mục mà file sẽ được upload vào, để nguyên nếu muốn upload cùng một thư mục

Lấy thông tin của file:

$file_tmp = isset($_FILES[‘file_upload’][‘tmp_name’]) ? $_FILES[‘file_upload’][‘tmp_name’] : “”;
$file_name = isset($_FILES[‘file_upload’][‘name’]) ? $_FILES[‘file_upload’][‘name’] : “”;
$file_type = isset($_FILES[‘file_upload’][‘type’]) ? $_FILES[‘file_upload’][‘type’] : “”;
$file_size = isset($_FILES[‘file_upload’][‘size’]) ? $_FILES[‘file_upload’][‘size’] : “”;
$file_error = isset($_FILES[‘file_upload’][‘error’]) ? $_FILES[‘file_upload’][‘error’] : “”;

Kiểm tra dung lượng file – tính theo KB:

if ( $file_size > ($file_max_size*1024) )
{
print “Bạn chỉ có thể upload file có dung lượng dưới {$file_max_size} KB.”;
return false;
}

Không cho upload các file có nội dung như: PHP, ASP, …etc:

if ( $file_type == “text/plain” )
{
print “File cần upload không hợp lệ!”;
return false;
}

Cuối cùng file sẽ được upload thông qua hàm copy():

copy ( $file_tmp, “./” . $folder_upload_in . $file_name);
print “Bạn đã upload thành công!”; 

————————————————————————–

Code hoàn chỉnh:

Để đơn giản ta sẽ tổng hợp những gì đã viết ở trên thành 1 file hoàn chỉnh, bạn tạo file upload.php có nội dung như sau:

 
<?php

if ( $_GET[“act”] == “do” )
{

$file_max_size = 1000; // Tính theo KB
$folder_upload_in = “”; // Thư mục mà file sẽ được upload vào, để nguyên nếu muốn upload cùng một thư mục
$file_tmp = isset($_FILES[‘file_upload’][‘tmp_name’]) ? $_FILES[‘file_upload’][‘tmp_name’] : “”;
$file_name = isset($_FILES[‘file_upload’][‘name’]) ? $_FILES[‘file_upload’][‘name’] : “”;
$file_type = isset($_FILES[‘file_upload’][‘type’]) ? $_FILES[‘file_upload’][‘type’] : “”;
$file_size = isset($_FILES[‘file_upload’][‘size’]) ? $_FILES[‘file_upload’][‘size’] : “”;
$file_error = isset($_FILES[‘file_upload’][‘error’]) ? $_FILES[‘file_upload’][‘error’] : “”;

if ( $file_size > ($file_max_size*1024) )
{
print “B&#7841;n ch&#7881; c&#243; th&#7875; upload file c&#243; dung l&#432;&#7907;ng d&#432;&#7899;i <b>{$file_max_size} KB</b>.”;
return false;
}

if ( $file_type == “text/plain” )
{
print “File c&#7847;n upload kh&#244;ng h&#7907;p l&#7879;!”;
return false;
}

copy ( $file_tmp, “./” . $folder_upload_in . $file_name);

print “B&#7841;n &#273;&#227; upload th&#224;nh c&#244;ng!<br/>”;

}

print <<<EOF
<form action=”upload.php?act=do” enctype=”multipart/form-data” method=”post”>
Upload file: <input type=”file” name=”file_upload”>
<input type=”submit” name=”submit” value=” G&#7917;i file “>
</form>
EOF;

?>

 
Chúc bạn thành công!