node+vue实现文件上传功能


Posted in Javascript onMay 28, 2020

本文实例为大家分享了node+vue实现文件上传的具体代码,供大家参考,具体内容如下

*后端*

const express = require('express');
const Router = express.Router();
const multer = require('multer');
const fs = require('fs');
const pathLib = require('path');
const videoModel = require('../../models/my_yx_app/video');


//设置 视频文件存放位置
const uploadVido = multer({
 dest:'uploads_yx_app/video/'
});
//上传视频
Router.post('/uploadVideo',uploadVido.single('file'),(req,res)=>{
 if (req.file) {
 let file = req.file;
 let newName = file.path+pathLib.parse(file.originalname).ext; //修改path
 fs.rename(file.path,newName,(err)=>{ //修改path
  if (err) {
  return res.status(200).json({
   code:0,
   msg:'服务器繁忙!'
  })
  }else {
  return res.status(200).json({
   code:1,
   msg:'上传完成',
   title:pathLib.parse(file.originalname).name,
   videoUrl:'http://127.0.0.1:3001/uploads_yx_app/video/'+file.filename+pathLib.parse(file.originalname).ext
  })
  }
 })
 }else {
 return res.status(200).json({
  code:0,
  msg:'服务器繁忙!'
 })
 }
});

*前端*

<div class="from-contral" style="position: relative">

   <!--此处name 与 uploadVido.single('file') 相同-->
   <input type="file" name="file" @change="changeFile" class="customStyle">
   <el-button size="mini" type="primary">
   添加文件
   <i class="el-icon-upload el-icon--right"></i>
   </el-button>
   <div class="zt-title-video">{{ file.name }}</div>
   <div class="zt-progress" v-show="percentageShow">
   <el-progress
    :text-inside="true"
    :stroke-width="20"
    :percentage="percentage"
   >
  </el-progress>
 </div>
</div>

*js处理逻辑数据*

saveData() { //上传
  let that = this;
  let fd = new FormData();
  fd.append('file', this.file);
  fileUpdata({ //上传文件存储在后端
   method: 'post',
   url: '/uploadVideo',
   data: fd,
   //监听上传时间 //实现进度条
   onUploadProgress(progressEvent) {
   that.percentageShow = true;
   that.percentage = parseInt(((progressEvent.loaded / progressEvent.total) * 100));
   }
  }).then(res => {
   if (res.data.code === 1) {
   //数据持久化
   fileUpdata({
    method: 'post',
    url: '/saveVideoInfo',
    data: {
    videoUrl: res.data.videoUrl, //路径
    videoName: res.data.title, //标题
    videoType:that.videoType, //类型
    userName:localStorage.getItem('username') //那个用户上传的
    }
   }).then(res => {
    if (res.data.code === 1) {
    setTimeout(function () { //为什么延迟,为了使进度条走完
     that.$message({
     message: '上传成功',
     type: 'success'
     })
    }, 1000);
    }
   }).catch(err => {
    this.$message.error('服务器繁忙,请稍后重试!');
   });
   }
  }).catch(err => {
   this.$message.error('服务器繁忙,请稍后重试!');
  })
  },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript获取当前ip的代码
May 10 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
javascript中if和switch,==和===详解
Jul 30 Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 Javascript
js定时器实例分享
Dec 20 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
js时间戳与日期格式之间转换详解
Dec 11 Javascript
微信小程序swiper禁止用户手动滑动代码实例
Aug 23 Javascript
JS删除数组指定值常用方法详解
Jun 04 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
JavaScript实现队列结构过程
Dec 06 Javascript
vue中实现图片压缩 file文件的方法
May 28 #Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 #Javascript
Vue实现附件上传功能
May 28 #Javascript
如何使用Javascript中的this关键字
May 28 #Javascript
简单了解JavaScript arguement原理及作用
May 28 #Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 #Javascript
js实现轮播图特效
May 28 #Javascript
You might like
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python排序方法实例分析
2015/04/30 Python
Python中title()方法的使用简介
2015/05/20 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
爱岗敬业演讲稿范文
2014/01/14 职场文书
火锅店创业计划书范文
2014/02/02 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
企业年会祝酒词
2015/08/11 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
React列表栏及购物车组件使用详解
2021/06/28 Javascript
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers