Tag: gridfs

MongoDB的GridFS – 它是文件名或文件名

请从http://mongoexplorer.com/看下面的图片: 我一直在努力通过GridFS,参考https://github.com/jamescarr/nodejs-mongodb-streaming 。 我上传的文件很好地返回,通过下面的get函数返回的stream看起来是正确的。 var gridfs = (function () { function gridfs() { } gridfs.get = function (id, fn) { var db, store; db = mongoose.connection.db; id = new ObjectID(id); store = new GridStore(db, id, "r", { root: "fs" }); return store.open(function (err, store) { if (err) { return fn(err); } return fn(null, store); }); […]

无法将缓冲区写入MongoDB GridFS

嗨,我已经花了差不多一天的时间来试图找出这一个。 我正在使用multer的inMemory标志从我的网页上传图片。 显而易见的尝试是将从multer接收的缓冲区写入GridF(GridStore更具体)。 这是我的密码 product.js(路由/控制器) var DB = rek('database'); var router = express.Router(); var multer = require("multer"); var uploadOptions = {inMemory:true, onFileUploadComplete: uploadDone} router.post('/product/:productId/images/', multer(uploadOptions), uploadImageResponse); function uploadDone(file) { var options = { name:file.name, mode:"w+", content_type:file.mimetype, w: "majority", chunkSize: 1024, metadata:file }; var GridStore = new DB.GridStore(DB.connection, file.name, "w+", options); GridStore.open(function(err, GS){ if(err) throw err; […]

使用angular-file-upload将文件发布到gridfs后获取数据

我从我的控制器发布文件到我的服务器,在这里gridfs写入它们。 之后,有一个writestream.on('close'),我可以console.log file._id到terminal。 我怎样才能在我的angular度控制器中设置一个variables到file._id? 服务器不知道angular度是什么,所以我怎样才能访问它? 此外,angular度file upload自动使post,所以我不知道如何添加callback。 https://github.com/nervgh/angular-file-upload

Node.js通过REST API发送图像

我努力寻找材料 我有一个使用mongoDB编写的用node.js编写的API。 我希望用户能够上传图片(个人资料图片),并保存在服务器上(在mongoDB)。 有几个问题,我见过build议使用GridFS,这是最好的解决scheme吗? 我如何发送这些文件? 我见过res.sendFile,但这又是最好的解决scheme吗? 如果有人有任何材料,他们可以链接我,我会感激 谢谢

如何使用nodeJS下载在gridFS中保存的文件

我需要从GridFS下载一个简历,下面是编写的代码ive写的,但是这似乎并没有给我一个物理文件供下载,这是用来读取内容的。 我如何下载文件? exports.getFileById = function(req, res){ var conn = mongoose.connection; var gfs = Grid(conn.db, mongoose.mongo); var id = req.params.ID; gfs.exist({_id: id,root: 'resume'}, function (err, found) { if (err) return handleError(err); if (!found) return res.send('Error on the database looking for the file.'); gfs.createReadStream({_id: id,root: 'resume'}).pipe(res); }); };

快速响应正文缓冲

我正尝试使用Node构build一个快速而简单的图像上传服务,它将接收到的图像保存到Mongo的GridFS中。 GridFS获取需要一个Buffer对象NodeJS Mongo Driver GridFS 这个问题很简单:我如何将接收到的请求正文转换成适当的缓冲区。 我的代码到目前为止(只有重要的部分):api.js var express = require('express'); var connect = require('connect'); var app = module.exports = express.createServer(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); }); var upload = require('./upload.js'); app.post('/upload', upload.upload); upload.js exports.upload = (function(req, res, next){ console.log("Uploading image…"); // Create buffer // Rest of the code } 我试过了: var buffer = new Buffer(util.inspect(req.body),'binary'); […]

在GridFS中显示图像

我正在使用gridfs-stream https://github.com/aheckmann/gridfs-stream&目前我正在从gridFS显示图像。 当读数据时,它给了我下面的输出。 当我将这些数据追加到<img src="data:image/jpeg;base64,(data)"> ,图像不显示。 gfs // create a read stream from gfs… .createReadStream({ filename: 'error1.png' }) // and pipe it to Express' response .pipe(res); 输出res: – 编辑: – 我试过这个: img.src = 'data:image/jpeg;base64,' + btoa(res); 输出呈现是: – <img src="data:image/jpeg;base64,W29iamVjdCBPYmplY3Rd"> 没有图片显示。

Node.jsfile upload到Gridfs – 错误:请求中止

我有一个问题,通过gridfs-stream节点模块将大file upload到Gridfs。 我试图上传较小的文件,它的工作很好,但是当我尝试上传较大的文件(〜2GB和更多)的node.js服务器给我这个错误: Error: Request aborted at IncomingMessage.onReqAborted (D:\ProjectName\node_modules\express\node_modules\connect\node_modules\multiparty\index.js:131:17) at IncomingMessage.EventEmitter.emit (events.js:92:17) at abortIncoming (http.js:1911:11) at Socket.serverSocketCloseListener (http.js:1923:5) at Socket.EventEmitter.emit (events.js:117:20) at TCP.close (net.js:466:12) 我的代码如下,这也是在本地节点服务器上完成的: //crud.js file var config = require('./config.js') var fs = require('fs') var Grid = require('gridfs-stream'); var gfs = Grid(config.db, config.mongo); exports.uploadFile = function (req, res) { var tempfile = req.files.filename.path; var […]

使用Node.js,Express.js和gridfs-stream直接将文件stream式传输到GridFS

我使用的是最新版本的express,mongodb,nodejs等。我没有使用正文parsing中间件,因为我不想在磁盘上传文件时将文件存储。 我只是想将它们直接stream入GridF。 我正在使用gridfs-stream npm模块。 我知道ExpressJs在底下使用强大。 请记住 – 我不希望文件打到磁盘。 这里是我的路由处理程序,我只是发布一个多部分表单 – 表单包含一个文件,只有1-3可选字段。 为什么哦为什么form.on('部分',函数(部分)) – 多次调用文件的相同部分超过100kb,而对于较小的文件 – 我们只是得到一个调用? 我真正想要做的是实际上将一个文件从一个上传文件直接传输到GridF中,并将同一文章中的所有表单文章域添加到GridFs元数据中。 mymodule.prototype.save = function(req,res,next) { if(req._body) { //return next(); }else if(contentType(req) !== 'multipart/form-data') { return next(); } var gfs = Grid(req.ctx.app.database.connection.db, mongo); req.body || (req.body = {}); req.files || (req.files = {}); var form = req.form, body = req.body, […]

使用Gridfsstream将videostream从mongoDBstream式传输到ios应用程序

我是一个相对较新的程序员,试图快速创build一个iOSvideostream应用程序。 我已经在node.js中写了后端,并且有一个到mongoDB的mongoose连接。 我已经能够使用下面的代码和gridfs上传video到数据库 function (req, res, next) { req.pipe(gfs.createWriteStream({ filename: 'filename'})); res.send("success"); }; 我正在尝试使用以下代码来stream式传输video gfs.findOne({_id: req.params.id}, function (err, file) { if (err) { return res.status(400).send(err); } else if (!file) { return res.status(404).send(' '); } else { res.header("Content-Type","video/mp4"); res.header("X-Content-Type-Options", "nosniff"); res.header("Accept-Ranges", "bytes"); res.header("Content-Length",file.length); var readStream = gfs.createReadStream({_id: file._id}); readStream.on('open', function () { console.log('Starting download…'); }); readStream.on('data', […]