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 相关文章推荐
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
什么是Node.js?Node.js详细介绍
Jun 01 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
May 21 Javascript
javascript汉字拼音互转的简单实例
Oct 09 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
vue购物车插件编写代码
Nov 27 Javascript
react中使用swiper的具体方法
May 15 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
jQuery实现简单弹幕制作
Dec 10 jQuery
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下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
js微信分享API
2020/10/11 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
node.js制作一个简单的登录拦截器
2020/02/10 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python实现简易内存监控
2018/06/21 Python
对python 中class与变量的使用方法详解
2019/06/26 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
英国电器零售商:PRC Direct
2018/06/21 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
大二学生学习个人自我评价
2014/01/19 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
安全演讲稿大全
2014/05/09 职场文书
学位证书委托书
2014/09/30 职场文书
2014年公司工作总结
2014/11/22 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers