初学nodejs,用的 express。
移动端这边 是想用 okhttp 直接post图片文件上去的,nodejs有没有什么直接接收并存储的方法?
之前有尝试过Base64上传,再到nodejs解码,感觉一张不带文字的图片不应该这样,太繁琐。
初学nodejs,用的 express。
移动端这边 是想用 okhttp 直接post图片文件上去的,nodejs有没有什么直接接收并存储的方法?
之前有尝试过Base64上传,再到nodejs解码,感觉一张不带文字的图片不应该这样,太繁琐。
建议用formidable,经过我这几天的实践,formidable的API设计更为合理,便于更多的自定义操作,最重要的是支持多文件上传。
connect-busboy没有上述的优点,而且不支持multipart
app.post('/ava',multipart(),function(req, res){
var filename = req.files.avatar.originalFilename || path.basename(req.files.avatar.path);
var targetPath = pathname + '/image_repository/avatar/' + filename;
fs.createReadStream(req.files.avatar.path).pipe(fs.createWriteStream(targetPath));
var _url = '/avatar/' + filename;
console.log(_url);
console.log(targetPath);
var _name = req.session.user;
//用module方法保存数据
User.update({name:_name},{$set:{avatar:_url}},function(err){
if (err) throw err;
});
res.json({
codetype : 200,
msg:{url:'http://' + req.headers.host + '/' + filename},
url:_url
});
//用entity方法保存数据,效果相同
//User.findOne({name:_name},function(err, doc){
// if (err) throw err;
// if (doc){
// doc.set({avatar:targetPath});
// doc.save();
// }else{
// console.log('no user');
// }
//});
//res.json({
// codetype : 200,
// msg:{url:'http://' + req.headers.host + '/' + filename},
// url:_url
//});
//var _img = req.files;
// console.log(_img);
//res.json(_img);
});
图片从前端用formdata对象传入,用流来把图片复制到你想要的文件夹下
3 回答2.6k 阅读✓ 已解决
1 回答940 阅读✓ 已解决
3 回答888 阅读✓ 已解决
2 回答2.1k 阅读
2 回答991 阅读✓ 已解决
2 回答1.2k 阅读
1 回答929 阅读✓ 已解决
express
form 添加这个:
enctype="multipart/form-data"
引用
路由
app.post('/movie/save',multipartMiddleware,Movie.savePoster,Movie.save)