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 兼容firefox的一些问题
May 21 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
May 25 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
addEventListener 的用法示例介绍
May 07 Javascript
关于JavaScript的变量的数据类型的判断方法
Aug 14 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
JS逻辑运算符短路操作实例分析
Jul 09 Javascript
vue实现打印功能的两种方法
Sep 07 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
smarty section简介与用法分析
2008/10/03 PHP
php遍历数组的方法分享
2012/03/22 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
简单了解python模块概念
2018/01/11 Python
Python 统计字数的思路详解
2018/05/08 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
大学生职业生涯规划范文
2013/12/31 职场文书
活动邀请函范文
2014/01/19 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
清正廉洁演讲稿
2014/05/22 职场文书