Bạn có thể tải ảnh lên MongoDB không?

Lưu trữ tệp là một tính năng quan trọng cần có trong nhiều quy trình trên nhiều loại ứng dụng khác nhau. Sự tồn tại của các quy trình như Content Delivery Networks (CDNs), được thiết lập thông qua các tùy chọn đám mây của bên thứ ba như Amazon Web Services và các tùy chọn lưu trữ tệp cục bộ luôn giúp việc xây dựng một tính năng như vậy trở nên dễ dàng hơn

Tuy nhiên, khái niệm lưu trữ tệp trực tiếp vào cơ sở dữ liệu thông qua một lệnh gọi API duy nhất đã thu hút tôi trong một thời gian dài. Đó là nơi GridFS xuất hiện trong bức tranh đối với tôi

Bạn có thể tải ảnh lên MongoDB không?
Có lẽ không phải là cách tốt nhất để triển khai hệ thống lưu trữ tệp

GridFS - Sự hiểu biết của giáo dân

MongoDB có một đặc tả trình điều khiển để tải lên và truy xuất các tệp từ nó được gọi là GridFS. GridFS cho phép bạn lưu trữ và truy xuất các tệp, bao gồm các tệp vượt quá giới hạn kích thước tài liệu BSON là 16 MB

GridFS về cơ bản lấy một tệp và chia nó thành nhiều phần được lưu trữ dưới dạng các tài liệu riêng lẻ trong hai bộ sưu tập

  • bộ sưu tập chunk (lưu trữ các phần tài liệu) và
  • bộ sưu tập file (lưu trữ siêu dữ liệu bổ sung do đó)

Mỗi đoạn được giới hạn ở kích thước 255 KB. Điều này có nghĩa là đoạn cuối cùng thường bằng hoặc nhỏ hơn 255 KB. Nghe khá gọn gàng

Khi bạn đọc từ GridFS, trình điều khiển sẽ tập hợp lại tất cả các khối nếu cần. Điều này có nghĩa là bạn có thể đọc các phần của tệp theo phạm vi truy vấn của mình. Chẳng hạn như nghe một đoạn của tệp âm thanh hoặc tìm nạp một đoạn của tệp video.  

Ghi chú. Nên sử dụng GridFS để lưu trữ các tệp thường vượt quá giới hạn kích thước 16 MB. Đối với các tệp nhỏ hơn, nên sử dụng định dạng BinData để lưu trữ tệp trong các tài liệu đơn lẻ

Điều này tóm tắt cách GridFS hoạt động nói chung. Đã đến lúc nhúng chân vào một số mã hoạt động và xem cách triển khai một hệ thống như vậy

Nói đủ rồi, cho tôi xem mã

Chúng tôi đang sử dụng Nút. js có quyền truy cập vào phiên bản đám mây của MongoDB để thiết lập. Bạn có thể tìm thấy kho lưu trữ mã cho ứng dụng mẫu tại đây

tarique93102/gridfs-file-storage

Đóng góp cho sự phát triển tarique93102/gridfs-file-storage bằng cách tạo một tài khoản trên GitHub

Bạn có thể tải ảnh lên MongoDB không?
tarique93102GitHub

Bạn có thể tải ảnh lên MongoDB không?

Chúng tôi sẽ hoàn toàn tập trung vào các đoạn mã liên quan đến các chức năng của GridFS. Chúng ta sẽ tìm hiểu cách thiết lập và sử dụng nó để lưu trữ tệp, truy xuất tệp hoặc một tệp cụ thể và xóa một tệp cụ thể. Hãy bắt đầu sau đó

Khởi tạo công cụ lưu trữ

Các gói cần thiết để khởi tạo động cơ là multer-gridfs-storagemulter. Chúng tôi cũng sử dụng phần mềm trung gian method-override để kích hoạt thao tác xóa tệp. Mô-đun npm crypto được sử dụng để mã hóa tên tệp khi được lưu trữ và đọc từ cơ sở dữ liệu

Khi công cụ lưu trữ sử dụng GridFS được khởi tạo, bạn chỉ cần gọi nó bằng phần mềm trung gian multer. Sau đó, nó được chuyển đến tuyến tương ứng thực hiện các hoạt động lưu trữ tệp khác nhau

Bạn có thể tải ảnh lên MongoDB không?

Khởi tạo Luồng GridFS

Chúng tôi khởi tạo luồng GridFS như được thấy trong mã bên dưới. Luồng là cần thiết để đọc các tệp từ cơ sở dữ liệu và cũng để giúp hiển thị hình ảnh cho trình duyệt khi cần

Bạn có thể tải ảnh lên MongoDB không?

Tải lên một tệp hoặc hình ảnh

Chúng tôi sử dụng lại phần mềm trung gian tải lên mà chúng tôi đã tạo trước đó.  

Ghi chú. Tên file được sử dụng làm tham số trong upload.single() vì chúng tôi có khóa có tên tương tự chứa tệp được gửi từ ứng dụng khách

Bạn có thể tải ảnh lên MongoDB không?

Tải lên nhiều tệp hoặc hình ảnh

Chúng tôi cũng có thể tải lên nhiều tệp cùng một lúc. Thay vì upload.single(), chúng ta chỉ cần sử dụng chunk0

Ghi chú. Số lượng tệp được tải lên có thể ít hơn số lượng tệp đã xác định

Bạn có thể tải ảnh lên MongoDB không?

Tìm nạp tất cả các tệp từ cơ sở dữ liệu

Sử dụng luồng được khởi tạo, chúng tôi có thể tìm nạp tất cả các tệp trong cơ sở dữ liệu cụ thể bằng cách sử dụng chunk1. Sau khi lấy được các tệp, chúng tôi ánh xạ nó thành một mảng và gửi phản hồi

Bạn có thể tải ảnh lên MongoDB không?

Tìm nạp một tệp theo tên tệp

Rất đơn giản để truy vấn GridFS cho một tệp duy nhất dựa trên một thuộc tính cụ thể như chunk2. Sử dụng luồng GridFS, bạn có thể truy vấn cơ sở dữ liệu thông qua chức năng chunk3

Bạn có thể tải ảnh lên MongoDB không?

Kết xuất hình ảnh đã tải xuống trình duyệt

Đây là phần phức tạp hơn một chút vì bạn không chỉ phải tìm nạp tệp từ cơ sở dữ liệu mà còn phải hiển thị tệp đó dưới dạng hình ảnh trên trình duyệt tương ứng. Chúng tôi tìm nạp tệp bình thường. Không có thay đổi trong quá trình đó

Sau đó, với sự trợ giúp của phương thức chunk4 trên luồng gfs, chúng ta có thể dễ dàng hiển thị hình ảnh khi nó trả về luồng có thể đọc được. Làm xong việc đó, chúng ta có thể sử dụng JavaScript của chunk5 để truyền phản hồi

Bạn có thể tải ảnh lên MongoDB không?

Xóa một tệp cụ thể theo Id

Xóa một tập tin cũng đơn giản như nhau. Chúng tôi sử dụng phương pháp luồng chunk6 với tham số chunk7 để truy vấn và xóa tệp liên quan

Bạn có thể tải ảnh lên MongoDB không?

Đó là những chức năng chính được cung cấp bởi thiết kế công cụ lưu trữ. Tôi đã tận dụng các tính năng GridFS đã thảo luận để tạo một ứng dụng tải lên hình ảnh đơn giản. Bạn có thể tìm hiểu sâu hơn về mã trong kho lưu trữ

Phần kết luận

Tôi đã mất một thời gian và khá nhiều nỗ lực để hiểu cách sử dụng GridFS cho một dự án cá nhân. Vì điều này, tôi muốn đảm bảo rằng ít nhất một người khác không phải đầu tư cùng một khoảng thời gian

Phải nói rằng, tôi khuyên bạn nên sử dụng GridFS một cách thận trọng. Nó không phải là viên đạn bạc cho tất cả các mối quan tâm về lưu trữ tệp của bạn. Tuy nhiên, đó là một đặc điểm kỹ thuật tiện lợi để biết và nhận thức được.  

Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào, bạn có thể bình luận trong bài đăng hoặc liên hệ với tôi trên chunk8

Trong thời gian đó, hãy tiếp tục viết mã

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Bạn có thể tải ảnh lên MongoDB không?
tarique ejaz

Tôi viết mã, đọc, viết và chỉ đơn giản là khao khát trở thành một cá nhân tốt hơn tôi ngày hôm nay


Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

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

Cách tải lên/lưu trữ hình ảnh trong MongoDB bằng Node. .
Thiết lập nút. mô-đun js
Tạo Chế độ xem để tải lên hình ảnh
Định cấu hình cơ sở dữ liệu MongoDB
Tạo phần mềm trung gian để tải lên và lưu trữ hình ảnh
Tạo Controller cho view
Tạo Trình điều khiển để tải lên Hình ảnh
Xác định tuyến đường
Tạo máy chủ ứng dụng Express

Tôi có thể tải tệp lên MongoDB không?

Express là khuôn khổ để tải các tệp lên MongoDB , bodyparser truy xuất nội dung cần thiết từ các biểu mẫu HTML; .

Làm cách nào để lưu trữ tệp phương tiện trong MongoDB?

Trong MongoDB, sử dụng GridFS để lưu trữ tệp lớn hơn 16 MB . Trong một số trường hợp, việc lưu trữ các tệp lớn có thể hiệu quả hơn trong cơ sở dữ liệu MongoDB so với trên hệ thống tệp cấp hệ thống. Nếu hệ thống tệp của bạn giới hạn số lượng tệp trong một thư mục, bạn có thể sử dụng GridFS để lưu trữ bao nhiêu tệp tùy ý.

Làm cách nào để tải hình ảnh lên MongoDB bằng Python?

Trước hết, hãy nhập thư viện sau đó kết nối với máy chủ để bạn có thể sử dụng MongoDB trong python và để lưu trữ hình ảnh, hãy tạo cơ sở dữ liệu. .
Ở phía bên phải của đầu ra, bạn có thể thấy cơ sở dữ liệu Hình ảnh được tạo thành công
Trong cơ sở dữ liệu có hai thư mục con có tên là fs. khối và fs. .
Hình ảnh của chúng tôi được lưu trữ trong fs