为了简化操作,我们可以引入multer模块来处理文件,代码如下
var multer = require('multer');
var storage = multer.diskStorage({
//设置上传后文件路径,uploads文件夹会自动创建。
destination: function (req, file, cb) {
cb(null, './public/uploads')
},
//给上传文件重命名,获取添加后缀名
filename: function (req, file, cb) {
var fileFormat = (file.originalname).split(".");
cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
}
});
//生成上传模块,让API调用
var upload = multer({
storage: storage
}).single('file');
以上代码就成功引入了文件上传模块,通过该模块我们可以快速生成相应内容,具体使用方法可以查看官方文档。准备工作完成后,在项目中使用:
/**
* 图片上传
*/
app.post('/upload', function (req, res) {
upload(req, res, function (err) {
if (err) {
console.log(err)
return
}
console.log(req.file)
res.end(JSON.stringify(req.file))
})
});
//图片上传到服务器 ,向客户端返回文件信息
比如文件的存储位置,之后就可以通过地址访问服务器的图片
/**
* 图片删除
*/
app.post('/image/delete', function (req, res) {
fs.unlink(req.body.path, function(err) {
if (err) {
return console.error(err);
}
res.end("文件删除成功!");
});
});
这里上传图片我们就直接使用了直接之前已经写好的upload模块,当该接口请求成功时 ,文件就已经上传成功了,如果你需要一个预览过程,那不应该直接调用上传接口 。通过原生node fs模块 我们也能对添加的文件进行删除,修改操作。
上线以及上线后遇到的history模式的刷新问题
上线过程我们可以当作就是换一台电脑跑程序,这里我用的是阿里云的服务器。在云服务器安装好环境好,把项目克隆进去 ,再装个forever之类的永久运行库,start ~ok 这样你的项目就永远在运行了。如果需要www访问 ,还需要买个dns解析 和域名,指向你的服务器。
以上我们如果在本地跑项目基本已经可以没问题。但项目上线后一刷新。啊啦??404什么鬼?打开百度一查。那炉火多~~当前端启用hisory模式,后台也必须开启对history的支持。express 环境如下:
var history = require('connect-history-api-fallback');
var connect = require('connect');
///////
app.use(history());
更新代码刷新~OK 完美!
总结
想学好一样东西,需要长久的积累。作为一个前端,一些服务器数据库的知识除了可以帮助我们更好的跟兄弟(后端)交流,对前端来说也是如鱼得水一般的存在。
下一篇文章准备写electron入门,electron是通过js构建桌面应用的框架,。共勉~~~~~
全部源码都在我的博客之中,对我的博客源码有兴趣,可以fork一份自行研究
如果觉得本文对你有所帮助,就star一下吧~大传送之术! 我的博客Github
更多:电脑一直在欢迎的界面通过express搭建自己的服务器
https://www.002pc.com/diannaojichu/1052.html
你可能感兴趣的express,服务器,搭建,通过,自己
