首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GridFS和mongoskin从表单上传文件的示例代码

使用GridFS和mongoskin从表单上传文件的示例代码
EN

Stack Overflow用户
提问于 2015-06-21 15:02:55
回答 2查看 308关注 0票数 1

我正在使用mongoskin在我的项目中连接mongodb。现在我有要求使用GridFs上传图像,音频等。我有一个HTML表单来上传这些文件。

我试着找出使用mongoskin上传文件的示例代码,但找不到任何好的。

请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2015-06-22 08:18:11

在花费了很多小时之后,我能够使用mongoskin将文件上传到Gridfs。我不确定这是不是完美的代码,但在这里分享它,因为我在搜索Google时找不到任何工作代码:-)

代码语言:javascript
复制
https://github.com/dilipkumar2k6/gridfs-mongoskin


var DBModule = require('./DBModule.js');
var Grid = require('gridfs-stream');
var mongoskin = require('mongoskin');

//Upload file to server and also update the database
exports.uploadContent = function (req, res) {
    console.log('Calling uploadFile inside FileUploadService');
    req.pipe(req.busboy);
    req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
        console.log('uploadFile  after busboy   fieldname: ' + fieldname + ", file : " + file + ", filename : " + filename);
        // make sure the db instance is open before passing into `Grid`
        var gfs = Grid(DBModule.db, mongoskin);
        //Get metadata var host = req.headers['host']; 
        var metadata = {contentType: mimetype};
        var writestream = gfs.createWriteStream({filename: filename, metadata: metadata});
        file.pipe(writestream);
        writestream.on('close', function (file) {
            // return URL to acces the uploaded content 
            var path = "contents/" + file._id;
            res.json({"path": path});
        });

        writestream.on('error', function (err) {
            log.error({err: err}, 'Failed to upload file to database');
            res.status(constants.HTTP_CODE_INTERNAL_SERVER_ERROR);
            res.json({error: err});
        });
    });
};
//view file from database
exports.previewContent = function (req, res) {
    var contentId = new DBModule.BSON.ObjectID(req.params.contentid);
    console.log('Calling previewFile inside FileUploadService for content id ' + contentId);

    var gs = DBModule.db.gridStore(contentId, 'r');
    gs.read(function (err, data) {
        if (!err) {
            //res.setHeader('Content-Type', metadata.contentType);
            res.end(data);
        } else {
            log.error({err: err}, 'Failed to read the content for id ' + contentId);
            res.status(constants.HTTP_CODE_INTERNAL_SERVER_ERROR);
            res.json({error: err});
        }
    });
};
票数 0
EN

Stack Overflow用户

发布于 2016-12-22 11:36:25

尝试使用gridfs存储数据(默认情况下使用mongoskin)。这对我很管用。

代码语言:javascript
复制
var ObjectID = require('mongodb').ObjectID,
    GridStore = require('mongodb').GridStore;
    exports.saveMedia = function(db, media, next) {
        console.log(media)
        db.open(function (err, db) {
            // Create a file and open it
            var gridStore = new GridStore(db, new ObjectID(), "w");
            gridStore.open(function (err, gridStore) {
                // Write some content to the file
               gridStore.write(new Buffer(media), function (err, gridStore) {
                    // Flush the file to db
                    gridStore.close(function (err, fileData)
                        //returns filename
                        next(null, fileData)
                    });
                });
            });
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30962103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档