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 相关文章推荐
用正则表达式 动态创建/增加css style script 兼容IE firefox
Mar 10 Javascript
JS 时间显示效果代码
Aug 23 Javascript
原生js实现给指定元素的后面追加内容
Apr 10 Javascript
jquery的相对父元素和相对文档定位示例代码
Aug 02 Javascript
通过js简单实现将一个文本内容转译成加密文本
Oct 22 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
JS中innerHTML和pasteHTML的区别实例分析
Jun 22 Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 Javascript
浅谈vue首屏加载优化
Jun 28 Javascript
基于js Canvas实现二次贝塞尔曲线
Dec 25 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 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+Html+缓存
2006/12/20 PHP
PHP图片上传代码
2013/11/04 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
Python内建数据结构详解
2016/02/03 Python
python executemany的使用及注意事项
2017/03/13 Python
python自定义异常实例详解
2017/07/11 Python
python3 flask实现文件上传功能
2020/03/20 Python
python 拼接文件路径的方法
2018/10/23 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
详解Python3 中的字符串格式化语法
2020/01/15 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Python如何生成xml文件
2020/06/04 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
不用游标的SQL语句有哪些
2012/09/07 面试题
保送生自荐信范文
2013/10/06 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
珠宝店促销方案
2014/03/21 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
Java 定时任务技术趋势简介
2022/05/04 Java/Android