【发布时间】:2014-06-01 05:23:52
【问题描述】:
我正在升级到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: {}
};
我该怎么做?
【问题讨论】:
标签: javascript file-upload sails.js multifile-uploader skipper