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 类似flash效果的立体图片浏览器
Feb 08 Javascript
JavaScript之引用类型介绍
Aug 10 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
jQuery实现html元素拖拽
Jul 21 Javascript
jQuery头像裁剪工具jcrop用法实例(附演示与demo源码下载)
Jan 22 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 Javascript
javascript实现前端分页效果
Jun 24 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删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
javascript测试题练习代码
2012/10/10 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
详细介绍8款超实用JavaScript框架
2013/10/25 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
初婚初育证明
2014/01/14 职场文书
关键在于落实心得体会
2014/09/03 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
MySQL数据库表约束讲解
2022/06/21 MySQL