Articles of gridfs

MongoDB GridFS的“非法块格式”exception

我一直在Node.js上编写一个应用程序,用于将图像存储在MongoDB的GridFS文件系统中。 我已经通过应用上传图片,并且图片显示为正确存储: $ mongofiles -v -d speaker-karaoke get howard-basement-100×115.jpg Tue Jul 17 12:14:16 creating new connection to:127.0.0.1 Tue Jul 17 12:14:16 BackgroundJob starting: ConnectBG Tue Jul 17 12:14:16 connected connection! connected to: 127.0.0.1 done write to: howard-basement-100×115.jpg 这抓住了MongoDB的.jpg,我可以打开它没有问题,所以它看起来像我上传正在正确存储。 但是,在我正在运行的应用程序中,当我尝试读取同一个文件时,我得到: 12:15:44 web.1 | started with pid 89621 12:15:45 web.1 | Connecting to mongodb://localhost/speaker-karaoke 12:15:45 web.1 | […]

Nodejs – HTTP范围支持/部分文件下载

我正在创build一个音乐networking应用程序,用于存储我在MongoDB(GridFS)中存储的MP3。 我的问题:如何添加HTTP范围支持,以便我可以开始stream式传输1/2audio文件,而无需等待缓冲区。 我知道GridFS支持读取X字节 – X字节,所以基本上我只需要知道如何让nodejs了解它只需要字节X – X. 谢谢!

使用Node.js将Base64图像转换为原始二进制文件

我发现贴近我正在寻找的post,但是我还没有能够成功地实现我想要的。 以下是一般stream程: 以其他场所数据提交照片,作为base64数据 如果数据前缀存在,则删除数据前缀,所以我只有图像base64数据 var base64data = venue.image.replace(/^data:image\/png;base64,|^data:image\/jpeg;base64,|^data:image\/jpg;base64,|^data:image\/bmp;base64,/, ''); 在GridFS中通过MongoDB存储Base64数据(我正在使用gridfstore ) 然后,我想根据请求将图像作为原始图像文件通过URL进行检索。 // generic images route server.get(version+'/images/:id', function(req, res) { gridfstore.read( req.params.id, function(error,data) { res.writeHead(200, { 'Content-Type': 'image/jpeg', 'Content-Length': data.buffer.length }); res.end(data.buffer); }); }); 基本上,这个方法返回GridFS中存储的Base64字节。 我尝试了其他方法,但他们不返回原始图像。 我想使用这样的url来提取图片: http://[localhost]/1/images/11dbcef0-257b-11e3-97d7-cbbea10abbcb 以下是浏览器跟踪的屏幕截图:

在GridFS,express,mongoDB,node.js中存储来自POST请求的数据stream

我想弄清楚如何直接将图像发布到GridFS,而不必将其存储在服务器上的任何位置作为临时文件。 我正在使用Postman(chrome ext。)发布文件,并使用以下命令将此文章存储为文件: req.pipe(fs.createWriteStream('./test.png')); 当从服务器上的文件创buildreadStream时,我也能够从readStream直接存储到GridFS。 (见代码) 我有以下文件, saveFromReq.js监听POST,基本上只是将其传递给savePic.js 。 saveFromReq.js: var express = require('express'); var app = express(); var savePic = require('./savePic'); var fs = require('fs'); var GridStore = require('mongodb').GridStore; var pic = './square.png'; var picID; //When the following //var pic = fs.createReadStream('./square.png', {autoClose: true}); //is not commented out, and 'req' is replaced with 'pic' […]

在没有GridFS的情况下,在NodeJS中使用MongoDB存储一些小(不到1MB)的文件

我运行一个网站,运行在nodeJS + mongoDB的后端。 现在,我正在实现一个系统来存储需要在数据库中的一些图标(小图像文件)。 根据我的理解,更有意义的是不使用GridFS,因为这似乎是为大文件或大量文件量身定做的。 由于我需要保存的每个文件都将在BSON最大文件大小下,所以我应该能够将它们直接保存到常规文档中。 我有两个问题: 1)我的推理是否正确? 可以将图像文件保存在常规的mongo集合中,而不是GridFS? 有什么我不在这里考虑,我应该是? 2)如果我的思维过程是健全的,我该如何去做呢? 我可以做如下的事情: //assume 'things' is a mongoDB collection created properly using node-mongodb-driver fs.readFile(pathToIconImage, function(err,image){ things.insert({'image':image}, function(err,doc){ if(err) console.log('you have an error! ' + err); }); }); 我猜测有可能是一个更好的方法来做到这一点,因为mongoDB使用BSON,在这里我试图保存在JSON文件之前,我把它发送到数据库。 我也不知道这个代码是否可以工作(还没有尝试过)。 更新 – 新问题 如果我在一个集合中有一个文档,它有三个信息保存:1)一个名字,2)一个date,和3)一个图像文件(上面的图标),我想把这个文档发送给客户端显示所有三个,这是可能的? 如果不是,我想我需要使用GridFS并将fileID保存在图像本身的位置。 思考/build议吗? 最好的,谢谢你的回应, 萨米