Làm cách nào để tải lên hình ảnh trong MySQL bằng PHP PDO?

Internet chưa bao giờ là một nơi an toàn;

Trước khi tải tệp lên máy chủ, chúng tôi phải đảm bảo xác thực tệp cần thiết được thực hiện chính xác. Nếu chúng tôi không xem xét các yếu tố bảo mật, chúng tôi có thể gặp rắc rối

Ví dụ về hướng dẫn tải lên tệp PHP 8

  • Hiển thị xem trước hình ảnh trước khi tải lên
  • Đặt tất cả các hình ảnh đã tải lên trong một thư mục cụ thể
  • Lưu trữ đường dẫn hình ảnh trong cơ sở dữ liệu MySQL

Cùng với đó, chúng tôi cũng sẽ đề cập đến việc xác thực hình ảnh sau bằng cách sử dụng PHP 8

  • Kiểm tra xem hình ảnh thực sự được tải lên
  • Chỉ cho phép phần mở rộng tệp cụ thể, chẳng hạn như. jpg,. jpeg hoặc. png
  • Đảm bảo kích thước tệp không được vượt quá 2MB
  • Kiểm tra xem tệp đã tồn tại chưa

Mục lục

Bắt đầu

Bắt đầu MAMP hoặc XAMPP, tạo cấu trúc thư mục và tệp sau trong thư mục htdocs

\-- php-file-upload
  |-- config
      |--- database.php
  |-- img_dir
      |--- image-1
      |--- image-2
  |-- file-upload.php
  |-- index.php

Tạo cơ sở dữ liệu & bảng

Tạo cơ sở dữ liệu

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4

Tạo

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5 bên trong cơ sở dữ liệu

Bạn có thể thực hiện lệnh sau để tạo các cột trong bảng để lưu ảnh vào cơ sở dữ liệu

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Tạo biểu mẫu tải tệp lên

Tạo biểu mẫu HTML cho phép người dùng của chúng tôi chọn hình ảnh từ thiết bị cục bộ của họ giống hình ảnh mà họ muốn lưu trữ trên máy chủ

Loại đầu vào phải được đặt thành tệp cùng với thuộc tính tên

Ngoài ra, hãy xác định các thẻ method=”post” và enctype=”multipart/form-data”

<form action="" method="post" enctype="multipart/form-data" class="mb-3">
  <h3 class="text-center mb-5">Upload File in PHP 8h3>
  <div class="user-image mb-3 text-center">
    <div style="width: 100px; height: 100px; overflow: hidden; background: #cccccc; margin: 0 auto">
      <img src="..." class="figure-img img-fluid rounded" id="imgPlaceholder" alt="">
    div>
  div>
  <div class="custom-file">
    <input type="file" name="fileUpload" class="custom-file-input" id="chooseFile">
    <label class="custom-file-label" for="chooseFile">Select filelabel>
  div>
  <button type="submit" name="submit" class="btn btn-primary btn-block mt-4">
    Upload File
  button>

Xem trước hình ảnh hiển thị

Bạn có thể hiển thị bản xem trước hình ảnh trước khi tải nó lên máy chủ với sự trợ giúp của jQuery

Nhập liên kết jQuery CDN trước thẻ đóng body


<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js">script>

Chúng tôi đã khai báo thẻ hình ảnh với thẻ src=”” trống

<img src="..." id="imgPlaceholder" alt="">

Hàm sau chuyển đổi chuỗi hình ảnh và đặt url base64 vào thẻ HTML

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6 khi người dùng chọn hình ảnh

Đặt đoạn mã sau ngay sau thẻ tập lệnh jQuery CDN

________số 8_______

Làm cách nào để tải lên hình ảnh trong MySQL bằng PHP PDO?

Cấu hình cơ sở dữ liệu

Thêm mã sau vào cấu hình/cơ sở dữ liệu. php để tạo kết nối PHP với cơ sở dữ liệu MySQL bằng phương thức PDO

// config/database.php

    $hostname = "localhost";
    $username = "root";
    $password = "";
    try {
        $conn = new PDO("mysql:host=$hostname;dbname=php_crud", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        //echo "Database connected successfully";
    } catch(PDOException $e) {
        echo "Database connection failed: " . $e->getMessage();
    }
?>

Xác thực tải lên tệp/hình ảnh trong PHP 8

Hãy để chúng tôi thêm xác thực đầu tiên của chúng tôi với sự trợ giúp của phương thức PHP file_exists(). Hiển thị thông báo lỗi cho người dùng nếu anh ta không chọn bất kỳ hình ảnh nào

Để giải quyết các lỗi, chúng tôi thiết lập một mảng

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7 với các thuộc tính trạng thái và thông báo. Chúng tôi sẽ hiển thị thông báo cho người dùng dựa trên phản hồi trên giao diện người dùng

if (!file_exists($_FILES["fileUpload"]["tmp_name"])) {
    $resMessage = array(
        "status" => "alert-danger",
        "message" => "Select image to upload."
    );
}

Đoạn mã sau áp dụng xác thực cho phép loại tệp cụ thể, chẳng hạn như. jpg, jpeg và. png sẽ được tải lên máy chủ. Bạn sẽ không được phép sử dụng các loại tệp khác và sẽ hiển thị thông báo lỗi nếu bạn làm như vậy

// Get file extension
$imageExt = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Allowed file types
$allowd_file_ext = array("jpg", "jpeg", "png");
else if (!in_array($imageExt, $allowd_file_ext)) {
    $resMessage = array(
        "status" => "alert-danger",
        "message" => "Allowed file formats .jpg, .jpeg and .png."
    );
}

Thiết lập giới hạn kích thước tệp hình ảnh bằng mã sau. Người dùng không thể cho phép tải lên hình ảnh có kích thước lớn hơn 2MB

else if ($_FILES["fileUpload"]["size"] > 2097152) {
    $resMessage=array("status"=> "alert-danger",
        "message"=> "File is too large. File size should be less than 2 megabytes."
    );
}

Đoạn mã dưới đây kiểm tra xem tệp hiện tại đã được tải lên chưa

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
0

Tạo thư mục img_dir trong thư mục gốc của dự án tệp tải lên PHP của bạn, ở đây chúng tôi sẽ lưu trữ tất cả các hình ảnh đã tải lên

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1

Hoàn thành ví dụ tải lên tệp PHP 8

Có thể tìm thấy ví dụ hoàn chỉnh về mã tải lên tệp PHP trong phần tải lên tệp. tập tin php

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2

Bao gồm tệp tải lên. php trong chỉ mục. html ở đây, chúng tôi đã xác định biểu mẫu tải lên tệp cùng với mảng thông báo

CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `file_path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3

Phần kết luận

Chúng tôi đã hoàn thành hướng dẫn Tải lên tệp PHP 8 và chúng tôi đã học cách tải lên và lưu trữ hình ảnh bằng PHP trong cơ sở dữ liệu MySQL. Tôi hy vọng bạn thích hướng dẫn này

Mã hoàn chỉnh của hướng dẫn này có thể được tìm thấy trên GitHub

Làm cách nào để tải lên hình ảnh trong MySQL bằng PHP PDO?

máy đào

Tôi là Digamber, một nhà phát triển full-stack và là người đam mê thể dục. Tôi đã tạo trang web này để truyền kinh nghiệm mã hóa của mình cho các lập trình viên mới. Tôi thích viết trên JavaScript, ECMAScript, React, Angular, Vue, Laravel

Twitter GitHub

Bài viết đề xuất

Xây dựng hệ thống xếp hạng 5 sao PHP MySQL bằng jQuery AJAXPHP 8 Tìm kiếm dữ liệu trực tiếp AJAX với MySQL Hướng dẫn PHP 8 Select2 Đa lựa chọn với jQuery AJAX Hướng dẫn PHP 8 Ví dụ về mã hóa và giải mã dữ liệu JSON Ví dụ về PHP 8 Hướng dẫn xác thực biểu mẫu phía máy chủ Tích hợp Google reCAPTCHA trong PHP 8 Biểu mẫu liên hệ Cách tạo Captcha . Lấy giá trị đã chọn và thêm kiểu Cách lấy các giá trị đã chọn từ tùy chọn được chọn trong PHP 8Nhận nhiều giá trị của các hộp kiểm đã chọn trong PHP 8 Tạo phân trang trong PHP 8 với MySQL và Bootstrap

Làm cách nào để tải hình ảnh lên cơ sở dữ liệu MySQL bằng PHP?

Nhận phần mở rộng tệp bằng hàm pathinfo() trong PHP và xác thực định dạng tệp để kiểm tra xem người dùng có chọn tệp hình ảnh hay không. Tải hình ảnh lên máy chủ bằng hàm move_uploaded_file() trong PHP. Chèn tên tệp hình ảnh vào cơ sở dữ liệu MySQL bằng PHP . Trạng thái tải lên sẽ được hiển thị cho người dùng.

Làm cách nào để chèn hình ảnh vào MySQL?

1 câu trả lời. Bạn có thể thử đoạn mã dưới đây để chèn hình ảnh. CHÈN VÀO GIÁ TRỊ xx_BLOB(ID,IMAGE)(1,LOAD_FILE('E. /Hình ảnh/giắc cắm. jpg'));

Làm cách nào để tải lên hình ảnh và hiển thị nó trong PHP?

Tải lên tệp PHP .
Định cấu hình "php. ini" Tập tin. Trước tiên, hãy đảm bảo rằng PHP được định cấu hình để cho phép tải tệp lên. .
Kiểm tra xem tệp đã tồn tại chưa. Bây giờ chúng ta có thể thêm một số hạn chế. .
Kích thước tệp giới hạn. Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload". .
Loại tệp giới hạn. .
Hoàn thành tải lên tệp PHP Script

Làm cách nào để tải lên tệp hình ảnh trong PHP?

Chương trình hoàn thành nhiệm vụ .
Bước 1. Tạo biểu mẫu bằng HTML để tải lên tệp hình ảnh. Mã HTML sau đây sẽ tạo một biểu mẫu đơn giản trên trang web của bạn, với tùy chọn “chọn tệp” và một nút để tải tệp đã chọn lên. .
Bước 2. Kết nối với cơ sở dữ liệu để chèn tệp hình ảnh