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 相关文章推荐
SyntaxHighlighter代码加色使用方法
Sep 07 Javascript
JSON扫盲帖 JSON.as类教程
Feb 16 Javascript
JavaScript 判断浏览器类型及版本
Feb 21 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
Js控制弹窗实现在任意分辨率下居中显示
Aug 01 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
vue页面更新patch的实现示例
Mar 25 Javascript
Vue-router编程式导航的两种实现代码
Mar 04 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
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
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue实现验证码输入框组件
2017/12/14 Javascript
JavaScript模块详解
2017/12/18 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
Python 爬虫性能相关总结
2020/08/03 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
销售顾问岗位职责
2014/02/25 职场文书
结对共建工作方案
2014/06/02 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
大国崛起观后感
2015/06/02 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python