Làm cách nào để lưu trữ hình ảnh trong cơ sở dữ liệu MongoDB thay vì chỉ văn bản? Tôi có thể tạo một mảng hình ảnh trong cơ sở dữ liệu MongoDB không? Nó sẽ có thể làm tương tự cho video?Lưu trữ hình ảnh trong cơ sở dữ liệu MongoDB
Trả lời
Vui lòng xem tài liệu GridFS để biết chi tiết về cách lưu trữ dữ liệu nhị phân đó.
Hỗ trợ ngôn ngữ cụ thể của bạn phải được liên kết ở cuối màn hình.
"Bạn nên thường xuyên sử dụng GridFS để lưu trữ các file lớn hơn 16MB" - When should I use GridFS?
MongoDB BSON documents được giới hạn ở mức 16 MB. Vì vậy, nếu tổng kích thước của mảng tệp của bạn nhỏ hơn, bạn có thể lưu trữ chúng trực tiếp trong tài liệu của mình bằng cách sử dụng loại dữ liệu BinData.
Video, hình ảnh, tệp PDF, bảng tính, v.v. - không quan trọng, tất cả đều được xử lý giống nhau. Tùy thuộc vào ứng dụng của bạn để trả lại tiêu đề loại nội dung thích hợp để hiển thị chúng.
Khám phá GridFS documentation để biết thêm chi tiết.
Bạn có thể thử cái này:
String newFileName = "my-image";
File imageFile = new File("https://stackoverflow.com/users/victor/images/image.png");
GridFS gfsPhoto = new GridFS(db, "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();
http://blog.mongodb.org/post/183689081/storing-large-objects-and-files-in-mongodb
Có một plugin Mongoose có sẵn trên NPM gọi là cầy mangut-file. Nó cho phép bạn thêm một trường tệp vào Lược đồ Mongoose để tải lên tệp. Tôi chưa bao giờ sử dụng nó nhưng nó có thể hữu ích. Nếu hình ảnh rất nhỏ, bạn có thể Base64 mã hóa chúng và lưu chuỗi vào cơ sở dữ liệu.
Storing some small (under 1MB) files with MongoDB in NodeJS WITHOUT GridFS
Bạn có thể sử dụng các kiểu dữ liệu bin nếu bạn đang sử dụng bất kỳ ngôn ngữ kịch bản để lưu trữ các tập tin/hình ảnh trong MongoDB. Dữ liệu Bin được phát triển để lưu trữ kích thước tệp nhỏ.
Tham khảo trình điều khiển ngôn ngữ kịch bản của bạn. Đối với PHP, hãy nhấp vào here.
var upload = multer({dest: "./uploads"});
var mongo = require('mongodb');
var Grid = require("gridfs-stream");
Grid.mongo = mongo;
router.post('/:id', upload.array('photos', 200), function(req, res, next){
gfs = Grid(db);
var ss = req.files;
for(var j=0; j<ss.length; j++){
var originalName = ss[j].originalname;
var filename = ss[j].filename;
var writestream = gfs.createWriteStream({
filename: originalName
});
fs.createReadStream("./uploads/" + filename).pipe(writestream);
}
});
Theo quan điểm của bạn:
<form action="/" method="post" enctype="multipart/form-data">
<input type="file" name="photos">
Với mã này bạn có thể thêm đơn cũng như nhiều hình ảnh trong MongoDB.
cách tốt nhất để tiết kiệm Image Trong Backend nodejs - Professional Đề xuất
var async = require('async');
var accessPath = path.join(__dirname, "../uploadLocation");
var folderName = new Date().getTime();
async.auto({
makeDir: function(next, results) {
makeDir(accessPath, folderName, next);
},
writeFile: ['makeDir', function(next, results) {
writeFile(accessPath, folderName, req.body.user.ImgData, req.body.user.email, next);
}],
}, function(err, success) {
if (err) {
console.log("error occurs while saving image")
} else {
console.log("success", success)
}
});
var makeDir = function(accessPath, folderName, next) {
try {
console.log("accessPath inside makeDir", accessPath, folderName)
fs.mkdirSync(accessPath + "/upload/user/" + folderName);
next(null, "done")
} catch (e) {
console.log("error in creating folder");
next(e, "Err")
}
}
var writeFile = function(accessPath, folderName, ImgData, email, next) {
var userImgName = email + ".jpg";
fs.writeFile(accessPath + "/upload/user/" + folderName + "/" + userImgName, ImgData, function(err, success) {
if (err) {
next(e, "Err")
} else {
console.log("success write file");
next(null, null);
}
});
}
- 1. Cách lưu hình ảnh trong cơ sở dữ liệu SQLite
- 2. Lưu trữ kích thước tệp trong cơ sở dữ liệu
- 3. lưu trữ hình ảnh trong cơ sở dữ liệu hoặc trong một tệp hệ thống?
- 4. Lưu trữ hình ảnh hồ sơ người dùng trên đĩa hoặc trong cơ sở dữ liệu?
- 5. Tôi có nên lưu trữ hình ảnh trong cơ sở dữ liệu hoặc thư mục không?
- 6. Cách lưu trữ hình ảnh trong các bảng cơ sở dữ liệu SQL Server cột
- 7. K2 componet lưu trữ hình ảnh trong cơ sở dữ liệu ở đâu?
- 8. Chuyển đổi phần tử Canvas thành Hình ảnh và lưu trữ trong cơ sở dữ liệu
- 9. Lưu trữ thông tin EXIF trong Cơ sở dữ liệu
- 10. Kiến trúc cơ sở dữ liệu MongoDB
- 11. Mã hóa cơ sở dữ liệu MongoDB
- 12. Lưu trữ hình ảnh trong cơ sở dữ liệu trực tiếp hoặc dưới dạng dữ liệu base64?
- 13. PHP - Lưu trữ hình ảnh trong dữ liệu SESSION?
- 14. Hadoop là cơ sở dữ liệu lưu trữ tài liệu
- 15. Tomcat: Lưu trữ phiên trong cơ sở dữ liệu
- 16. Lưu trữ ASP.Net MVC Views trong cơ sở dữ liệu
- 17. Lưu trữ IPv6 trong cơ sở dữ liệu
- 18. Python, lưu trữ một dict trong cơ sở dữ liệu
- 19. cách lưu trữ mật khẩu trong cơ sở dữ liệu?
- 20. Lưu trữ Enums trong Cơ sở dữ liệu MySQL
- 21. Lưu trữ ngày giờ UTC trong cơ sở dữ liệu
- 22. Lưu trữ JSON trong cơ sở dữ liệu msSQL?
- 23. Lưu trữ thông tin OpenID trong cơ sở dữ liệu
- 24. Lưu trữ Chứng chỉ X509 trong cơ sở dữ liệu
- 25. Lưu trữ UUID trong cơ sở dữ liệu HSQLDB
- 26. Memcache, Mongodb hoặc lưu trữ cơ sở dữ liệu khác cho các phiên Lithium
- 27. WordPress lưu trữ siêu dữ liệu hình ảnh ở đâu?
- 28. Cơ sở dữ liệu Magento IP được lưu trữ
- 29. Hình ảnh cơ sở dữ liệu bộ nhớ đệm MVC
- 30. GWT - hình ảnh từ cơ sở dữ liệu
GridFS là cho các tài liệu> 16MB. Không phải tất cả dữ liệu nhị phân đều lớn. Ngoài việc có thể vượt qua giới hạn đó, có lợi ích nào khác khi sử dụng GridFS thay vì chỉ loại BinData không? –
Video sẽ có xu hướng> 16MB nên câu trả lời này có lẽ là hợp lý. Có lẽ nên đề cập đến điều này mặc dù. – Chanoch