nodejs+koa+vue实现上传文件(图片)到服务器以及删除图片
nodejs+koa+vue实现上传文件(图片)到服务器以及删除图片
前言:
这两天把小程序的页面和小程序支付给解决掉了,当然啦微信支付也是前后端一块写的,以及支付成功回调函数等,当然了这篇记录的不是微信支付,微信支付我会在一个完整的时间整理出来。这篇主要就是给大家讲一下文件上传删除,这一片呢就以图片上传删除为例。
好多人有一个误区,特别是在网上搜了一大堆方法之后更是一头雾水,今天就给大家介绍一下我使用的最简单的方法。
技术点:
- vue+elementUi 使用el-upload上传图片
- nodejs + koa. 使用fs+koa-multer实现将图片保存在服务器以及删除图片
一.vue+element使用el-upload上传图片
老样子,话不多说先上图:
在上代码:
1upload 2 action="/upload/friedChickensImg" 3 list-type="picture-card" 4 :limit="1" 5 :on-preview="preview" 6 :on-success="afterSuccessUpload" 7 :before-remove="handleRemove" 8 > 9 10 11 12 13
这里主要有几个方法就是删除呀预览呀等等大家去官网一看便知!
其实前端处理很简单只需要这几行代码就ok,我们具体来看后端代码!
二.nodejs + koa. 使用fs+koa-multer实现将图片保存在服务器以及删除图片
上传成功:
删除成功:
先看图片我们跟能直观的感受到,接下来
上代码:
首先呢就是下载koa-multer,大家自行百度 npm i koa-multer --saver , 接着配置参数
1 const multer = require('koa-multer');//加载koa-multer模块 2 3 //文件上传 4 var storage = multer.diskStorage({ 5 //文件保存路径 6 destination: function (req, file, cb) { 7 cb(null, 'C:/friedChickens/friedChickensImg') 8 }, 9 //修改文件名称 10 filename: function (req, file, cb) { 11 var fileFormat = (file.originalname).split("."); 12 cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]); 13 } 14 }) 15 //加载配置 16 var upload = multer({ storage: storage });
直接复制代码大家不要问那么多,不懂得可以留言,傻瓜式操作!
然后就是给前端提供一个接口简简单单三行代码:
1 const multer = require('koa-multer');//加载koa-multer模块 2 3 //文件上传 4 var storage = multer.diskStorage({ 5 //文件保存路径 6 destination: function (req, file, cb) { 7 cb(null, '/friedChickensImg') 8 }, 9 //修改文件名称 10 filename: function (req, file, cb) { 11 var fileFormat = (file.originalname).split("."); 12 cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]); 13 } 14 }) 15 //加载配置 16 var upload = multer({ storage: storage }); 17 /* 上传图片 */ 18 router.post('/friedChickensImg', upload.single('file'), async (ctx, next) => { 19 ctx.body = { 20 filename: ctx.req.file.filename,//返回文件名 21 path:'/friedChickensImg' 22 } 23 })
这里大家需要注意一点的就是,图片保存的路径可以任意写!
到此呢,你调用此接口就可以看到你的服务器成功的上传了一张照片,??????
然后就是
删除图片:
删除图片就直接给大家贴出来完整的代码,不做过多的赘述!
1 deleteFolderRecursive(url, name) { 2 var files = []; 3 4 if (fs.existsSync(url)) { //判断给定的路径是否存在 5 6 files = fs.readdirSync(url); //返回文件和子目录的数组 7 8 files.forEach(function (file, index) { 9 10 var curPath = path.join(url, file); 11 12 if (fs.statSync(curPath).isDirectory()) { //同步读取文件夹文件,如果是文件夹,则函数回调 13 deleteFile(curPath, name); 14 } else { 15 16 if (file.indexOf(name) > -1) { //是指定文件,则删除 17 fs.unlinkSync(curPath); 18 console.log("删除文件:" + curPath); 19 } 20 } 21 }); 22 } else { 23 console.log("给定的路径不存在!"); 24 } 25 }
两个参数,第一个是存放文件的路径,第二个参数就是文件名称!
代码里有少量的注释大家自行观看!
至此呢删除文件就大功告成。??????
结束语:
我的随笔呢大都以代码为主,并且是测试可以正常使用,大家只要拿到项目里就可以直接使用,是不是很傻瓜?如果大家有不懂的可以留言或者是加我wx:18237266724,就到这里吧洗洗睡觉!!!