ayo*_*yon 4 javascript mongodb node.js gridfs sails.js
我在sails.js应用程序中使用gridfs将图像上传到服务器.我的上传代码如下
upload: function (req, res) {
req.file('avatar')
.upload({
adapter: require('skipper-gridfs'),
uri: 'mongodb://localhost:27017/dbname.images'
}, function whenDone(err, uploadedFiles) {
if (err) return res.negotiate(err);
else return res.ok({
files: uploadedFiles,
textParams: req.params.all()
});
});
}
Run Code Online (Sandbox Code Playgroud)
我得到以下回应......
{
"files": [
{
"fd": "2d8910a0-8ca2-4df1-9930-6ddd721a0416.jpg",
"size": 172883,
"type": "image/jpeg",
"filename": "Photo on 12-20-14 at 9.53 PM.jpg",
"status": "bufferingOrWriting",
"field": "avatar",
"extra": {
"fileId": "54aee6ced4a0e88f0dc9025f",
"fd": "2d8910a0-8ca2-4df1-9930-6ddd721a0416.jpg",
"dirname": "."
}
}
],
"textParams": {}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我需要下载上面上传的文件,我该怎么办?我在互联网上获得了以下代码来下载任务,但这对我来说没有多大意义.基本上我想要上传图片的下载网址,我可以使用移动应用程序中的网址来显示图片.
var blobAdapter = require('skipper-gridfs')({
uri: 'mongodb://localhost:27017/dbname.images'
});
blobAdapter.read(filename, callback);
Run Code Online (Sandbox Code Playgroud)
有人可以帮我这个吗?提前致谢.
经过一番研究,我终于设法解决了这个问题.我fd在文件上传后得到响应中的字段,然后将其保存以供使用.我去了skipper-gridfs代码,发现了一个'read'接受该值并返回所需文件的方法.所以,我只是通过该方法从mongo中提取该文件并作为响应发送.这是工作文件.
download: function (req, res) {
var blobAdapter = require('skipper-gridfs')({
uri: 'mongodb://localhost:27017/mydbname.images'
});
var fd = req.param('fd'); // value of fd comes here from get request
blobAdapter.read(fd, function(error , file) {
if(error) {
res.json(error);
} else {
res.contentType('image/png');
res.send(new Buffer(file));
}
});
}
Run Code Online (Sandbox Code Playgroud)
我希望将来能帮到像我这样的人:)
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |