我正在升级到Sails.js版本0.10,现在需要使用Skipper来管理我的文件上传。
当我上传一个文件时,我会使用UUID生成一个新的名称,并将其保存在public/files/文件夹中(当我完成所有工作后,这将会改变,但现在对于测试很好)。
我将原始名称和已上传名称+路径保存到Mongo数据库中。
在Sails v0.9.x下,这一切都相当简单,但使用Skipper后,我无法弄清楚如何读取新文件的名称和路径。(显然,如果我能读取名称,我就可以构造路径,所以我只需要名称)
我的控制器看起来像这样:
当我上传一个文件时,我会使用UUID生成一个新的名称,并将其保存在public/files/文件夹中(当我完成所有工作后,这将会改变,但现在对于测试很好)。
我将原始名称和已上传名称+路径保存到Mongo数据库中。
在Sails v0.9.x下,这一切都相当简单,但使用Skipper后,我无法弄清楚如何读取新文件的名称和路径。(显然,如果我能读取名称,我就可以构造路径,所以我只需要名称)
我的控制器看起来像这样:
var uuid = require('node-uuid'),
path = require('path'),
blobAdapter = require('skipper-disk');
module.exports = {
upload: function(req, res) {
var receiver = blobAdapter().receive({
dirname: sails.config.appPath + "/public/files/",
saveAs: function(file) {
var filename = file.filename,
newName = uuid.v4() + path.extname(filename);
return newName;
}
}),
results = [];
req.file('docs').upload(receiver, function (err, files) {
if (err) return res.serverError(err);
async.forEach(files, function(file, next) {
Document.create({
name: file.filename,
size: file.size,
localName: // ***** how do I get the `saveAs()` value from the uploaded file *****,
path: // *** and likewise how do i get the path ******
}).exec(function(err, savedFile){
if (err) {
next(err);
} else {
results.push({
id: savedFile.id,
url: '/files/' + savedFile.localName
});
next();
}
});
}, function(err){
if (err) {
sails.log.error('caught error', err);
return res.serverError({error: err});
} else {
return res.json({ files: results });
}
});
});
},
_config: {}
};
我该怎么做?