Hướng dẫn upload ảnh trong PHP lưu vào cơ sở dữ liệu

Chào các bạn hôm nay mình sẽ hướng dẫn các bạn cách upload ảnh lên server PHP và lưu lại đường dẫn ảnh vào trong cở sở dữ liệu. Đầu tiên chúng ta tạo cơ sở dữ liệu có tên là gallery, sau đó bạn tạo tiếp một table có tên là image, với các field như sau:

Tiếp theo chúng ta tạo project có tên là upload, tạo file index.php để hiển thị form upload, tạo file xuly.php để xử lý upload ảnh và lưu trữ vào cơ sở dữ liệu.

Các bạn tạo file index.php có nội dung như sau:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hướng dẫn upload ảnh - Lập Trình Việt Nhật</title>
</head>
<body>
	<form action="xuly.php" enctype="multipart/form-data" method="POST">
		Chọn file ảnh: <input type="file" name="uploadFile"><br> <input
			type="submit" name="submit" value="Upload">
	</form>
</body>
</html>

Trong đó chúng ta cần thêm thuộc tính enctype=”multipart/form-data” cho form, và dùng thẻ input type=”file” để upload được file.

Tiếp theo file xuly.php dùng để xử lý upload ảnh có nội dung như sau:

– Khi người dùng đã chọn ảnh thì tiến hành upload tùy theo yêu cầu của bài toán mà chúng ta tiến hành xây dựng chức năng cho nó, ví dụ yêu cầu đặt ra ở đây là chỉ được upload các file ảnh có kiểu file là jpg, png, gif và lưu trữ vào cơ sở dữ liệu.
– Chúng ta tiến hành kiểm tra xem ảnh có phù hợp hay không, nếu là file ảnh thì tiến hành upload và ngược lại thì báo lỗi file chọn không phải file ảnh.

<?php
include_once ('connect.php');
if (isset($_POST['submit'])) {
    if ($_FILES['uploadFile']['name'] != NULL) {
        // Kiểm tra file up lên có phải là ảnh không
        if ($_FILES['uploadFile']['type'] == "image/jpeg" || $_FILES['uploadFile']['type'] == "image/png" || $_FILES['uploadFile']['type'] == "image/gif") {
            
            // Nếu là ảnh tiến hành code upload
            $path = "images/"; // Ảnh sẽ lưu vào thư mục images
            $tmp_name = $_FILES['uploadFile']['tmp_name'];
            $name = $_FILES['uploadFile']['name'];
            // Upload ảnh vào thư mục images
            move_uploaded_file($tmp_name, $path . $name);
            $image_url = $path . $name; // Đường dẫn ảnh lưu vào cơ sở dữ liệu
                                      // Insert ảnh vào cơ sở dữ liệu
            $sql = "INSERT INTO `image` (`image_url`, `created`) VALUES ('$image_url','" . date('Y-m-d H:i:s') . "')";
            $smt = mysqli_prepare($connect, $sql);
            if (mysqli_stmt_execute($smt)) {
                echo 'Thêm thành công ảnh';
            } else {
                echo 'Không thể thêm được ảnh';
            }
        } else {
            // Không phải file ảnh
            echo "Kiểu file không phải là ảnh";
        }
    } else {
        echo "Bạn chưa chọn ảnh upload";
    }
}
?>

Để lưu trữ ảnh vào cơ sở dữ liệu chúng ta cần thêm kết nối vào cơ sở dữ liệu thông qua file connect.php và có nội dung như sau:

<?php
$host = 'localhost'; // 127.0.0.1
$user = 'root'; // User đăng nhập MySQL
$password = '12345678'; // Password đăng nhập MySQL
$database = 'gallery'; // Tên cơ sở dữ liệu
$connect = mysqli_connect($host, $user, $password, $database) or die('Not connect');
date_default_timezone_set("Asia/Bangkok"); // Thiết lập múi giờ chuẩn
?>

Cấu trúc thư mục code như sau:

Như vậy là chúng ta đã làm thành công việc upload ảnh từ máy tính lên server và lưu trữ đường dẫn ảnh vào trong cơ sở dữ liệu.

Các bạn download code mẫu ở đây DOWNLOAD.

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

2 thoughts on “Hướng dẫn upload ảnh trong PHP lưu vào cơ sở dữ liệu

  • November 14, 2020 at 8:33 pm
    Permalink

    Cảm ơn ad, ad có hướng dẫn dùng ckedittor để soạn thảo ko ạ

    Reply
    • November 14, 2020 at 8:36 pm
      Permalink

      Cảm ơn bạn, mình sẽ viết bài về ckedittor bạn theo dõi nhé

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *