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代码超级推荐
Apr 05 Javascript
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
JS基础之undefined与null的区别分析
Aug 08 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
jQuery选择器源码解读(八):addCombinator函数
Mar 31 Javascript
jQuery实现模拟marquee标签效果
Jul 14 Javascript
js实现弹窗暗层效果
Jan 16 Javascript
详解JS中的attribute属性
Apr 25 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
vue实现一个炫酷的日历组件
Oct 08 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自动加载的两种实现方法
2010/06/21 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
Javascript中的delete介绍
2012/09/02 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
会计出纳岗位职责
2013/12/25 职场文书
小班开学寄语
2014/04/04 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
代理人委托书
2014/08/01 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
小学班主任评语
2014/12/29 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android