PHP Tải hình ảnh lên cơ sở dữ liệu với MySql – PHP

Bạn có muốn tải hình ảnh lên cơ sở dữ liệu không? Hầu hết các dịch vụ ứng dụng di chuyển các tệp đã tải lên vào một thư mục và lưu đường dẫn của chúng vào cơ sở dữ liệu.

Trước đó, chúng ta đã thấy mã để lưu trữ hình ảnh đã tải lên cơ sở dữ liệu bằng cách sử dụng các trường BLOB của MySQL. BLOB (Đối tượng dữ liệu lớn nhị phân) là một trong các loại dữ liệu MySql. Nó có thể có tệp dữ liệu nhị phân. MySQL hỗ trợ bốn loại kiểu dữ liệu BLOB như sau.
Xem bản trình diễn

  1. TINYBLOB
  2. BÃI
  3. VỪABLOB
  4. LONGBLOB

Đối với ví dụ này, chúng tôi đã tạo một trong các trường BLOB ở trên trong cơ sở dữ liệu MySQL để xem cách tải lên một hình ảnh. Thêm vào đó, mã này sẽ tìm nạp và dữ liệu BLOB từ cơ sở dữ liệu và hiển thị hình ảnh cho trình duyệt.

Tập lệnh cơ sở dữ liệu

Trước khi chạy ví dụ này, hãy tạo cấu trúc cơ sở dữ liệu cần thiết trên máy chủ của bạn.

CREATE TABLE images ( id INT(11) AUTO_INCREMENT PRIMARY KEY, image LONGBLOB NOT NULL );

php tải hình ảnh lên đầu ra cơ sở dữ liệu

Biểu mẫu HTML có tùy chọn tải lên hình ảnh

Đây là một hình thức tải lên tệp thông thường với đầu vào tệp. Trường này hạn chế loại tệp để chỉ chọn các hình ảnh bằng cách sử dụng chấp nhận thuộc tính.

Khi gửi biểu mẫu này, upload.php sẽ nhận dữ liệu nhị phân của tệp đã đăng ở phía máy chủ.

<!DOCTYPE html>
<html>

<head>
  <title>PHP - Upload image to database - Example</title>
  <link href=" rel="stylesheet" type="text/css" />
  <link href="form.css" rel="stylesheet" type="text/css" />
</head>

<body>
  <div class="PHP-container">
    <h1>Upload image to database:</h1>
    <form action="upload.php" method="post" enctype="multipart/form-data">
      <div class="row">
        <input type="file" name="image" accept="image/*">
        <input type="submit" value="Upload">
      </div>
    </form>

    <h2>Uploaded Image (Displayed from the database)</h2>
  </div>
</body>

</html>

Chèn hình ảnh vào cơ sở dữ liệu bằng PHP và MySql

Tập lệnh PHP này lấy dữ liệu tệp đã chọn với mảng $_FILES. Mảng này chứa tên cơ sở, đường dẫn nguồn tạm thời, loại và các chi tiết khác.

Với những chi tiết này, nó thực hiện tải tệp lên cơ sở dữ liệu. Các bước thực hiện như sau,

  1. Mảng tệp xác thực không trống.
  2. Truy xuất nội dung tệp hình ảnh bằng file_get_contents($_FILES[“image”][“tmp_name”]).
  3. Chuẩn bị chèn và liên kết dữ liệu nhị phân hình ảnh với các tham số truy vấn.
  4. Thực hiện thao tác chèn và lấy id bản ghi cơ sở dữ liệu.
<?php
// MySQL database connection settings
$servername = "localhost";
$username = "root";
$password = "admin123";
$dbname = "PHP_image_upload";

// Make connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection and throw error if not available
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Check if an image file was uploaded
if (isset($_FILES["image"]) && $_FILES["image"]["error"] == 0) {
    $image = $_FILES['image']['tmp_name'];
    $imgContent = file_get_contents($image);

    // Insert image data into database as BLOB
    $sql = "INSERT INTO images(image) VALUES(?)";
    $statement = $conn->prepare($sql);
    $statement->bind_param('s', $imgContent);
    $current_id = $statement->execute() or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_connect_error());

    if ($current_id) {
        echo "Image uploaded successfully.";
    } else {
        echo "Image upload failed, please try again.";
    }
} else {
    echo "Please select an image file to upload.";
}

// Close the database connection
$conn->close();

Tìm nạp hình ảnh BLOB từ cơ sở dữ liệu và hiển thị lên giao diện người dùng

Mã PHP này chuẩn bị một truy vấn CHỌN để tìm nạp hình ảnh BLOB. Sử dụng hình ảnh nhị phân từ BLOB, nó tạo URL dữ liệu. Nó áp dụng mã hóa PHP base64 trên nội dung nhị phân hình ảnh.

URL dữ liệu này được đặt làm nguồn của phần tử hình ảnh HTML bên dưới. Tập lệnh này hiển thị hình ảnh được chèn gần đây trên màn hình. Chúng tôi cũng có thể hiển thị một bộ sưu tập hình ảnh của tất cả các hình ảnh BLOB từ cơ sở dữ liệu.

<?php
    // Retrieve the uploaded image from the database
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "PHP_image_upload";

    $conn = new mysqli($servername, $username, $password, $dbname);
    if ($conn->connect_error) {
      die("Connection failed: " . $conn->connect_error);
    }

    $result = $conn->query("SELECT image FROM images ORDER BY id DESC LIMIT 1");

    if ($result && $result->num_rows > 0) {
      $row = $result->fetch_assoc();
      $imageData = $row['image'];
      echo '<img src="data:image/jpeg;base64,' . base64_encode($imageData) . '" alt="Uploaded Image" style="max-width: 500px;">';
    } else {
      echo 'No image uploaded yet.';
    }

    $conn->close();
    ?>

Xem demo Tải về

↑ Quay lại Đầu trang


Xem thêm tin mới và bổ ích tại:

Kiến thức gia đình

Tri thức đời sống

– Kênh youtube Kiến thức gia đình