使用Sails JS我尝试上传图片并在视图中显示。
问题:
感谢您提供任何帮助。
答案 0 :(得分:4)
1:如果要在视图中使用该图像,则需要通过将配置对象传递给upload
方法并使用dirname
属性来更改上传目录:
req.file('image').upload({
dirname: '../../assets/images/'
}, function(error, uploadedFiles) {
// do something after file was uploaded...
});
然后,在您看来:
<img src="/images/fileName.jpg">
// Or, if you are using Jade:
img(src='/images/fileName.jpg')
2:我不确定你的意思&#34;访问图像&#34;,但图像将保存在本地磁盘上,可以在.tmp/uploads/
或目录中找到以dirname
传入的内容。
3:要保留与原始文件名相同的名称,您需要将saveAs
属性传递给upload
方法的配置对象:
req.file('image').upload({
saveAs: function(file, cb) {
cb(null, file.filename);
}
}, function(err, uploadedFiles) {
// do something after file was uploaded...
});
您可以在Skipper documentation或Sails documentation中找到更多详细信息。 Skipper是Sails用于文件上传的模块。
答案 1 :(得分:0)
我有一种不同的处理方法,因为我不会自动想要公开上传的每个文件。
上传文件后,我将其保留在私人位置,然后在&#34;文件&#34;中创建一个记录。包含fd。
的模型然后我有一条路线:
config/routes.js
'get /files/:id' : 'FileControllers.stream',
指向我的控制器:
api/controllers/FilesController.js
/**
* serve a file
*
* (GET /file/:id)
*/
stream: function (req, res){
Files.findOne(req.param('id')).exec(function (err, file){
if (err) return res.negotiate(err);
if (!file) return res.notFound();
if (!file.fileDescriptor) {
return res.notFound();
}
res.sendFile(file.fileDescriptor);
});
}
Sails documentation中提到了res.sendFile,但在express docs中对此进行了详细说明。
简而言之,res.sendFile:
在给定路径上传输文件。设置Content-Type响应 HTTP头字段基于文件名的扩展名。
通过控制器运行它,我仍然可以使用我的策略来指示访问。