一、node.js图片的上传
图片上传
1.前端角度
a.将图片发给后端 ajax
1.前端获取图片信息 文件域
2.将文件信息 存到formdata
3.调用后端写的api接口发送数据
b.接受返回的数据
前端页面显示图片
上传图片储存位置
<form action="/up" method="post" enctype="multipart/form-data">
<input type="file" class="files" id="files" name="files">
<input type="submit" id="uploadFile" value="文件上传">
</form>
// 导入必备的模块,全局设置一些公共变量
var fs = require('fs');
var formidable = require('formidable');
var img = '/images/';
router.post('/up', function(req, res) {
//创建上传表单
var form = new formidable.IncomingForm();
//设置编辑
form.encoding = 'utf-8';
//设置上传目录
form.uploadDir = '张少龙/public' + img;
//保留后缀
form.keepExtensions = true;
//文件大小 2M
form.maxFieldsSize = 2 * 1024 * 1024;
// 上传文件的入口文件
form.parse(req, function(err, fields, files) {
if (err) {
res.locals.error = err;
res.render('user',{title:"信息中心",email:req.cookies.email})
return;
}
for (var key in files) {
var file = files[key];
//产生随机数
var fName = (new Date()).getTime();
//判断图片类型
switch (file.type) {
case "image/jpeg":
fName = fName + ".jpg";
break;
case "image/png":
fName = fName + ".png";
break;
default:
fName = fName + ".png";
break;
}
}
console.log(fName);
if(fName== " ") {
res.locals.error = '只支持png和jpg格式图片';
res.render('user',{title:"个人中心",email:req.cookies.email})
}
console.log(fName);
var newPath = form.uploadDir + fName;
console.log(newPath);
fs.renameSync(file.path, newPath); //重命名fs.renameSync(oldPath, newPath)
res.render('user',{title:"信息中心",email:req.cookies.email})
});
res.locals.success = '上传成功';
console.log(res.locals.success);
})
总结:
美好而又短暂的一周又过去了。现在已经是这学期开学的第九周了,算起来已经过去一半了。这着过去的第九周里,由于上星期项目考核没有做好,这星期在全身心地写项目,改bug.只要有时间就在改项目,似乎找到了一点刚开始进入小组的状态,发了疯的努力,即使有很多时候都在做无用功,但还是不敢止步不前。有几次真的感觉挺崩溃的。付出跟回报是等价的,继续努力吧!