Làm cách nào chúng tôi có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?


Để tải lên tệp trong MySQL, trước tiên chúng ta phải tạo một bảng trong cơ sở dữ liệu

Ở đây chúng tôi sử dụng 2 tệp cho tệp tải lên

  • mục lục. php biểu mẫu HTML cho phép người dùng chọn tệp họ muốn tải lên
  • tải lên. php Để xử lý dữ liệu người dùng và tải tệp lên



File Upload




upload



đầu ra


Làm cách nào chúng tôi có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?
báo cáo quảng cáo này
Làm cách nào chúng tôi có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?
báo cáo quảng cáo này

Tôi đã trình bày ví dụ tải tệp lên bằng PHP trong các hướng dẫn trước tải tệp PHP lên nhưng trong hướng dẫn này, tôi sẽ chỉ cho bạn cách lưu tệp đã tải lên vào cơ sở dữ liệu MySQL bằng PHP

Bạn có thể thắc mắc tại sao bạn cần lưu nội dung tệp vào cơ sở dữ liệu thay vì chỉ lưu vào hệ thống tệp. Trong trường hợp ứng dụng PHP cần đặt toàn bộ tệp thì phương pháp ưu tiên sẽ là đưa tệp vào hệ thống tệp của máy chủ và lưu đường dẫn tệp vào cơ sở dữ liệu

Tuy nhiên, trong các tình huống, ứng dụng cần lưu toàn bộ nội dung tệp vào cơ sở dữ liệu cùng với các dữ liệu khác. Trong những trường hợp như vậy, bạn phải đặt nội dung tệp vào trường kiểu dữ liệu BLOB của MySQL

Ưu điểm của việc lưu trữ tệp vào cơ sở dữ liệu

  1. Tính nhất quán của ACID (Nguyên tử, Tính nhất quán, Tính toàn vẹn, Độ bền) bao gồm cả việc khôi phục bản cập nhật sẽ phức tạp khi các tệp được lưu trữ bên ngoài cơ sở dữ liệu. Có các tệp và cơ sở dữ liệu đồng bộ và có thể tham gia vào các giao dịch có thể rất hữu ích
  2. Các tệp đi cùng với cơ sở dữ liệu và không thể tách rời khỏi nó
  3. Sao lưu tự động bao gồm các tệp nhị phân

Nhược điểm của việc lưu trữ tệp vào cơ sở dữ liệu

  1. Kích thước của tệp nhị phân khác nhau giữa các cơ sở dữ liệu
  2. Lưu trữ các tệp trong cơ sở dữ liệu có thể làm cho cơ sở dữ liệu lớn hơn nhiều. Do đó làm tăng kích thước của cơ sở dữ liệu. Mức độ kiến ​​thức cần thiết để duy trì cơ sở dữ liệu tăng tỷ lệ thuận với kích thước của cơ sở dữ liệu, i. e. , cơ sở dữ liệu lớn phức tạp hơn để duy trì hơn cơ sở dữ liệu nhỏ. Do đó, nó làm tăng chi phí bảo trì cho doanh nghiệp
  3. Cơ sở dữ liệu lớn hơn sẽ tiêu tốn nhiều bộ nhớ hơn khi chúng cố gắng đưa vào bộ nhớ càng nhiều dữ liệu càng tốt
  4. Tính di động cần được quan tâm nếu các tính năng dành riêng cho hệ thống như đối tượng FILESTREAM của SQL Server được sử dụng và trong tương lai, bạn cần chuyển sang một hệ thống cơ sở dữ liệu khác
  5. Mã lưu trữ tệp vào cơ sở dữ liệu có thể là một vấn đề. Khi bạn lưu trữ tệp trên hệ thống tệp, sẽ không có lớp bổ sung nào liên quan để bọc/chỉnh sửa/thay đổi tệp nguồn
  6. Việc cung cấp các tệp cho một trang web sẽ phức tạp hơn bởi vì bạn phải viết một trình xử lý để truyền tệp nhị phân từ cơ sở dữ liệu. Một lần nữa, việc thêm một trình xử lý không phải là không thể nhưng làm tăng thêm độ phức tạp
  7. Trong nhiều trường hợp, nó sẽ làm phình các tệp cơ sở dữ liệu và gây ra một số vấn đề về hiệu suất. Nếu bạn dán các đốm màu vào một bảng có nhiều cột thì điều đó thậm chí còn tệ hơn

điều kiện tiên quyết

PHP7. 4. 3, MySQL7. 0. 17, Máy chủ HTTP Apache 2. 4

Tải tệp lên và lưu vào MySQL

Trong ví dụ này, các tệp được chọn bằng các nút duyệt và các tệp được lưu vào trường BLOB của cơ sở dữ liệu MySQL. Tập lệnh PHP lưu trữ các tệp vào cột được chỉ định của bảng cơ sở dữ liệu và trả về phản hồi dưới dạng thông báo thành công từ tập lệnh PHP. Là một bước xác thực, tôi đã thêm chỉ để kiểm tra xem bạn đã chọn ít nhất một tệp để tải lên hay chưa

Hướng dẫn này sẽ cung cấp cho bạn thêm liên kết đính kèm để tải lên tệp, vì vậy bạn sẽ nhấp vào Đính kèm tệp khác, sau đó bạn sẽ nhận được nút Chọn tệp để đính kèm tệp khác. Nếu bạn không muốn tải lên tệp đã chọn, bạn có thể xóa tệp đính kèm bằng liên kết Xóa

Cần có biểu mẫu HTML bên dưới để tải lên nhiều tệp

Files Save into MySQL database using PHP
 

Cần có các đoạn mã jQuery bên dưới để đính kèm thêm tệp và xóa tệp đã chọn nếu bạn không muốn tải tệp đã chọn lên

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

________số 8_______

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

<script>
    function readURL(input) {
      if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
          $('#imgPlaceholder').attr('src', e.target.result);
        }
        // base64 string conversion
        reader.readAsDataURL(input.files[0]);
      }
    }
    $("#chooseFile").change(function () {
      readURL(this);
    });
</script>

Làm cách nào chúng tôi có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?

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 2 MB

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 chúng tôi có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?

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 cách sử dụ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ụ mã hóa và giải mã dữ liệu JSON Ví dụ hướng dẫn xác thực biểu mẫu phía máy chủ PHP 8Tích hợp Google reCAPTCHA trong biểu mẫu liên hệ PHP 8Cá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 lên hình ảnh trong PHP và lưu trữ trong cơ sở dữ liệu và thư mục?

Bước 1. Tạo một biểu mẫu HTML đơn giản. Ở bước 1, hãy tạo một biểu mẫu HTML đơn giản. .
Bước 2. Tạo bảng cơ sở dữ liệu MYSQL. Để tạo một bảng cơ sở dữ liệu, chúng ta cần viết một truy vấn mysql. .
Bước 3. Tạo kết nối MYSQL trong PHP. .
Bước 4. Lưu trữ hình ảnh trong cơ sở dữ liệu bằng PHP. .
Bước 5. ĐẦU RA. Hiển thị hình ảnh từ cơ sở dữ liệu bằng PHP

Làm cách nào để lưu trữ tệp PDF trong cơ sở dữ liệu bằng PHP?

Trong bài viết này, chúng ta sẽ xem cách tải tệp PDF lên cơ sở dữ liệu MySQL bằng PHP. .
Tiếp cận. Đảm bảo bạn đã cài đặt XAMPP hoặc WAMP trên máy của mình. .
Tạo cơ sở dữ liệu và bảng
Tạo thư mục và tập tin
Tạo biểu mẫu. Với biểu mẫu HTML, chúng tôi đang thu thập dữ liệu từ người dùng bằng cách bật

Làm cách nào để di chuyển tệp đã tải lên vào thư mục trong PHP?

Hàm move_uploaded_file() di chuyển tệp đã tải lên đến đích mới. Ghi chú. Chức năng này chỉ hoạt động trên các tệp được tải lên qua cơ chế tải lên HTTP POST của PHP. Ghi chú. Nếu tệp đích đã tồn tại, nó sẽ bị ghi đè.

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

Chương trình PHP . Tại đây, bạn phải tạo một cơ sở dữ liệu và đặt tên là “Image_Upload”. Tiếp theo, bạn cần tạo một bảng mới trong cơ sở dữ liệu. Bạn đã tạo một bảng mới có tên là “Hình ảnh”