Hướng Dẫn Code Upload File với PHP

Trong bài viết này chúng ta sẽ tìm hiểu cách viết code PHP để xử lý file upload trên server. Để làm theo hướng dẫn trong bài viết các bạn cần có một web server cùng với PHP cài đặt trên máy tính cá nhân của bạn.

Bạn có thể tham khảo bài viết hướng dẫn cài đặt Apache, PHP và MySQL nếu như chưa có các phần mềm hỗ trợ trên.

Hướng Dẫn Code Upload File với PHP

Bước 1: Tạo Form Upload với HTML

Trên thư mục gốc của web server tại localhost bạn tạo một tập tin HTML với một form dùng để upload file. Tập tin này chúng ta sẽ đặt tên form_upload.html với nội dung như sau:

<!DOCTYPE html>
<html>
<body>
<form action="http://localhost/process_file_upload.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="upload_file_input" id="upload_file_input">
        <br>
        <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>

Ở form trên bạn lưu ý các thuộc tính sau:

  • Thuộc tính method="POST": Quy định phương thức HTTP sử dụng để thực hiện việc upload là POST.
  • Thuộc tính action="http://localhost/process_file_upload.php": Địa chỉ URL trên server sẽ xử lý việc upload
  • Thuộc tính enctype="multipart/form-data": Để upload dữ liệu form dạng tập tin binary bạn cần sử dụng thuộc tính này.

Bước 2: Code PHP Xử Lý Upload trên Server

Sau khi hoàn tất việc tạo form HTML thì bước tiếp theo bạn cần làm là tạo một tập tin PHP với tên process_file_upload.php ở cùng thư mục gốc của web server. File này sẽ được sử dụng để xử lý dữ liệu file upload tới server:

<?php
// code PHP xử lý upload file
?>

Bạn tiếp tục tạo một thư mục với tên là uploads trong thư mục gốc để lưu trữ file upload trong thư mục này.

Bây giờ quay lại tập tin process_file_upload.php và thêm vào đoạn code sau:

<?php
// code PHP xử lý upload file
$upload_directory = __DIR__ . DIRECTORY_SEPARATOR . "uploads/";
?>

Đoạn code trên tạo một biến $upload_directory với giá trị là địa chỉ tuyệt đối của thư mục uploads. Bạn lưy ý để phân biệt giữa thư mục và tập tin (hoặc thư mục) chúng ta sử dụng PHP constant là DIRECTORY_SEPARATOR thay vì \, điều này là bởi vì hệ điều hành Linux sử dụng / thay vì \ để phân biệt giữa các thư mục hoặc thư mục và tập tin trong đường dẫn.

Khi ngườu dingf upload file lên server thì PHP đã thực hiện sẵn một bước là di chuyển file này vào một thư mục tạp thời trên server và đợi chúng ta xử lý tiếp tập tin tạm thời này. Tiếp theo chúng ta sẽ lấy ra 2 thông tin của file tạp thời trên đó là địa chỉ của file và phần mở rộng:

<?php
//...
// lấy thông tin của file tạp thời
$temp_file_name = $_FILES["upload_file_input"]["tmp_name"];
$temp_file_extension = pathinfo($temp_name, PATHINFO_EXTENSION);
?>

Tập tin tạm thời trên nếu không được di chuyển sang một thư mục khác sẽ bị xoá ngay sau đó. Do đó chúng ta cần di chuyển tập tin này vào một thư mục uploads đã tạo ở trên.

Tạo một biến $new_name với giá trị là địa chỉ của tập tin mới mà chúng ta sẽ di chuyển tập tin tạm thời tới đâu:

// ...
// tên của tập tin mới mà chúng ta sẽ dùng để lưu trữ file được upload
$new_name = "uploaded-file" . "." . $temp_file_extension;

Di chuyển file tạp thời tới thư mục uploads với tên $new_name:

move_uploaded_file($temp_name, $upload_directory . $new_name);

Kiểm Tra Lại

Bây giờ bạn mở trình duyệt web và truy cập vào địa chỉ http://localhost//form_upload.html sau đó thực hiện việc upload một tập tin trên máy tính. Kết thúc quá trình upload bạn vào thư mục uploads để chắc chắn rằng file upload đã được di chuyển tới đây.

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

Thêm Bình Luận: