Tag: gridfs stream

陷入二进制数据更改为base64(Gridfsstream)

我试图从我上传的图像更改一些二进制数据到base64,所以我可以使用它来显示图像。 但最小的是给我这个错误: TypeError: Cannot read property 'on' of undefined 我不明白,当我发布我也使用.on事件,它工作正常。 除此之外,我想知道我是否正确地更改了数据。 请考虑到我是相当新的节点:) 我如何保存上传的图像(POST) // Post to profile page router.post('/', function(req, res, next) { var busboy = new Busboy({ headers: req.headers }); busboy.on('file', function(fieldname, file, filename, encoding, mimetype) { var conn = mongoose.createConnection('192.168.99.100:32773'); conn.once('open', function () { var gfs = Grid(conn.db); var writestream = gfs.createWriteStream({ filename: […]

Express.js和gridfs-stream无法捕获错误

这是一个简单的图像(图片)下载服务器,Express.js接收请求,从MongoDB GridFS获取图像,并用该文件进行响应。 当请求有效时(当请求的文件存在时)可以。 问题是,当查询失败时,我无法捕捉到MongoError (即请求的图像不存在)。 import Grid from 'gridfs-stream' const root = 'fs_images' // This func returns the file stream export function getReadStream (id) { const gfs = Grid(mongoose.connection.db, mongoose.mongo) const options = { _id: id, mode: 'r', root: root } const readStream = gfs.createReadStream(options) readStream.on('error', function (err) { // throw here // it performs […]

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, […]

使用GraphicsMagick处理GridFS文件并将其作为新文件存储

我试图通过gridfs-stream ( https://github.com/aheckmann/gridfs-stream )读取一个GridFS文件,用gm旋转它90°并将其作为一个新的GridFS文件存储。 我的结果看起来非常不稳定…所以我在寻求帮助来优化这个小小的代码片段。 而这个代码的第二件事:我需要一种“开关”。 这段代码对图像进行旋转操作。 但我需要传递参数来做旋转,resize或其他。 我如何整合这个? import Grid from 'gridfs-stream' import { MongoInternals } from 'meteor/mongo' const id = '12345' const gfs = Grid( MongoInternals.defaultRemoteCollectionDriver().mongo.db, MongoInternals.NpmModule ) const readStream = gfs.createReadStream({ _id: id }) readStream.on('error', function (err) { console.error('Could not read stream', err) throw Meteor.Error(err) }) gm(readStream) .rotate('#ffffff', 90) .stream(function (err, stdout, […]

如何使用文件和数据在Node Express中发送响应

module.exports.validateUser = function (req, res) { User.find({ 'username': req.body.username, 'password': req.body.password }, function (err, result) { if (result.length) { var gridfs = req.app.get('gridfs'); var readstream = gridfs.createReadStream({ _id: result[0]._doc.picture }); req.on('error', function (err) { res.send(500, err); }); readstream.on('error', function (err) { res.send(500, err); }); // Just sends the file //readstream.pipe(res); res.send('This is incedible'); } else […]

GridFS中的自定义字段

它可能在GridFS中保存自定义字段,即时通讯使用NodeJS和gridfs-stream模块。 该文件被保存为下一个模式: { _id: "5208b9929e462bc24b000001", filename: "algo.txt", contentType: "binary/octet-stream", length: 133074, chunkSize: 262144, uploadDate: "2013-08-12T10:31:46.152Z", aliases: null, metadata: null, md5: "56cd6b2057623bfb70111b883678d436" } 它可能添加自定义字段与上传文件的用户标识。 其他的可能性可以放在元数据中,但后来发现它很贵。

gridfs-stream总是将文件存储为“contentType:binary / octet-stream”

我试图编写一个程序在nodejs中存储在MongoDB中的文件列表。 它工作正常,但有一个问题:它始终将contentType元数据存储为二进制/八位字节stream,我希望它存储实际的MIMEtypes。 我曾尝试在readStream(通过promises)之前获取mimetypes,但即使我对contentType进行了硬编码(例如“image / jpeg”),也始终将元数据保存为“binary / octet-stream”。 这是我的代码: files.forEach(function(f) { var conn = mongoose.createConnection(db); conn.once('open', function () { var gfs = Grid(conn.db); var writeStream = gfs.createWriteStream({ filename: f.location, mode: 'w', contentType: 'image/jpeg' }); writeStream.on('finish', function() { console.log('Storing', f.location, 'OK'); return; }) .on('error', function(data) { console.log('Error', f.location, data) }); fs.createReadStream(path.join(__dirname, 'files', f.location), 'utf-8') .pipe(writeStream); }); }); […]

Node.jsfile upload(Express 4,MongoDB,GridFS,GridFSstream)

我正在尝试在我的node.js应用程序中设置一个文件API。 我的目标是能够直接将文件stream写入到gridfs,而不需要最初将文件存储到磁盘。 这看起来像我的创build代码正在工作。 我能够保存file upload到网格。 问题是阅读文件。 当我尝试通过networking浏览器窗口下载保存的文件时,我发现文件内容包装了如下内容: ——WebKitFormBoundarye38W9pfG1wiA100l Content-Disposition: form-data; name="file"; filename="myfile.txt" Content-Type: text/javascript ***File contents here*** ——WebKitFormBoundarye38W9pfG1wiA100l– 所以我的问题是我需要做什么从文件stream中剥离边界信息,然后将其保存到gridfs? 这是我正在使用的代码: 'use strict'; var mongoose = require('mongoose'); var _ = require('lodash'); var Grid = require('gridfs-stream'); Grid.mongo = mongoose.mongo; var gfs = new Grid(mongoose.connection.db); // I think this works. I see the file record in fs.files exports.create […]

在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' […]