我正在升级到Sails.js
0.10 版,现在需要使用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: {}
};
我该怎么做呢?