2013-06-14 3 views
2

Это мой express.js код для загрузки и скачивания файлов GridFS:Как я могу указать ведро GridFS?

var fs = require("fs"); 
var gridStream = require("gridfs-stream"); 
var mongoose = require("mongoose"); 

exports.init = function(app, db) 
{ 
    var grid = gridStream(db, mongoose.mongo); 

    app.post("/UploadFile", function(request, response) 
    { 
     var file = request.files.UploadedFile; 

     var meta = request.param("Meta"); 
     var name = request.param("Name"); 

     var stream = grid.createWriteStream(
     { 
      filename: name, 
      metadata: meta 
     }); 

     fs.createReadStream(file.path) 
     .on("end", function() 
     { 
      response.send({ Success: true }); 
     }) 
     .on("Error", function(error) 
     { 
      HandleError(error, response); 
     }) 
     .pipe(stream); 
    }); 

    app.get("/DownloadFile", function(request, response) 
    { 
     var selector = request.param("Selector"); 

     response.writeHead(200, { "Content-Type" : "image/png"}); 
     grid.createReadStream({ filename: "FileUploadNamed" }).pipe(response); 
    }); 
} 

Он отлично работает, но я хотел бы указать ведро читать и писать, но я не знаю, как для этого. Я видел примеры онлайн-вызова конструктора GridFS, но, как вы можете видеть, я не делаю этого здесь. В документации также говорится, что можно указать другое имя ведра, но я ничего не вижу о том, как это сделать.

Как выбрать, в каком ведре сохраняются и сохраняются мои файлы?

ответ

3

Это не хорошо документированы в gridfs потоке или подстилающей родной драйвер MongoDB он использует, но вот как вы это делаете:

Вот options объект из gridfs-потока createWriteStreamexample (обратите внимание на root опция):

{ 
    _id: '50e03d29edfdc00d34000001', 
    filename: 'my_file.txt',   
    mode: 'w', 
    chunkSize: 1024, 
    content_type: 'plain/text', 
    root: 'my_collection', // Bucket will be 'my_collection' instead of 'fs' 
    metadata: { 
     ... 
    } 
} 

Почему это работает:

gridfs-поток проходит через options вы передаете вызов createWriteStream или createReadStream в основной драйвер mongodb для создания объекта gridStore для представления файла. Драйвер mongodb по очереди recognizes root in the options object в качестве переопределения строки префикса сетки сетки «fs» по умолчанию.

Смежные вопросы