Bạn không nhất thiết phải cần GridFS để lưu trữ tệp trong MongoDB, nhưng nó chắc chắn làm cho nó có trải nghiệm tốt hơn, vì nó xử lý việc phân tách và lưu dữ liệu nhị phân, đồng thời cung cấp siêu dữ liệu. Sau đó, bạn có thể lưu trữ một ID trong User
của mình tài liệu vào ảnh đại diện.
Ngoài ra, bạn cũng có thể lưu trữ dữ liệu nhị phân trực tiếp trong tài liệu của mình, mặc dù trong mã của bạn, bạn không lưu dữ liệu. Bạn chỉ cần mở nó bằng PIL.Image
, nhưng sau đó không làm gì với nó.
Giả sử bạn đang sử dụng pymongo
đối với trình điều khiển của bạn, tôi nghĩ những gì bạn có thể làm là chỉ bọc dữ liệu nhị phân trong một Binary
thùng chứa, và sau đó lưu trữ nó. Điều này chưa được tôi kiểm tra, nhưng tôi cho rằng nó sẽ hoạt động:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Bây giờ điều đó đang được nói ... chỉ cần làm cho nó dễ dàng hơn với chính bạn và sử dụng GridFS. Đó là ý nghĩa của nó.
Nếu bạn đang sử dụng GridFS, nó có thể trông giống như sau:
from gridfs import GridFS
avat_ctype = self.request.files['avatar'][0]["content_type"]
fs = GridFS(db)
avatar_id = fs.put(avat, content_type=avat_ctype, filename=nomfich)
user={
...
"avatar_name":avatar,
"avatar_id": avatar_id
...
}