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 克隆数组最简单的方法
Feb 12 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
Jquery 实现Tab效果 思路是js思路
Mar 02 Javascript
javascript的console.log()用法小结
May 31 Javascript
JS中图片缓冲loading技术的实例代码
Aug 29 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
javascript实现tab切换的四种方法
Nov 05 Javascript
微信小程序 UI与容器组件总结
Feb 21 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
解决Extjs下拉框不显示的问题
Jun 21 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 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
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python判断字符串与大小写转换
2015/06/08 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python os库常用操作代码汇总
2020/11/03 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
学生喝酒检讨书500字
2014/11/02 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
创业计划书之美甲店
2019/09/20 职场文书
新手初学Java List 接口
2021/07/07 Java/Android
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
vue实现Toast组件轻提示
2022/04/10 Vue.js