Vue 文件上传和“假进度显示“

【避坑指“难”】ant-design-vue中Upload上传组件使用customRequest:httpRequest后进度条消失 <a-upload style="margin-left: 10px;" name="file" :multiple="true" action="#" :customRequest="httpRequest" :beforeUpload="beforeUpload" . 阅读详情

系统中文件上传需要耗费部分时间,本文注重前端Vue怎么编写上传功能和显示假进度

1、Vue部分代码如下:

<template>
  <div>
    <el-dialog title="提示" :visible.sync="dialogVisible" width="30%">
      <el-upload
        ref="upload"
        :action="''"
        :file-list="fileList"
        :http-request="getFile"
        accept=".xlsx"
        :on-remove="handleRemove"
        :on-change="handleChange"
        :before-upload="beforeUpload"
        >
        <el-button size="small" type="primary">点击上传</el-button>
      </el-upload>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="upload">确 定</el-button>
      </span>
    </el-dialog>
    
  </div>
</template>

属性中action设置空,限制上传格式accept,上传限制大小beforeUpload.最重要的是http-request, 用来获取file对象

2、data部分和methods内容

<script>
  export default {
    data(){
      return{
        dialogVisible :false, 
        fileList: [], 
      }
    },
    methods:{
      beforeUpload(file){ 
        const isLt10M =file.size /1024 /1024 <10; 
        if(!isLt10M){ 
          this.$message.error("大于10M") 
        } 
        return isLt10M 
      }, 
      handleRemove(file, fileList){ 
        this.file = {}; 
      }, 
      handleChange(file,fileList){ 
        if (fileList.length>1){ 
          fileList.splice(0,1);
        } 
      }, 
      getFile(item){
        this.file = item.file; 
      },
      upload(){ 
        const fd = new FormData(); 
        var vm = this;
        fd.append("file", vm.file); 
        fd.append("pid", 111);
        if(Object.keys(vm.file) <=0){
          vm.$message.warning("文件未选择");
        }else{
          const config = {headers:{"Content-Type":"multipart/form-data"}};
          const rloading = vm.openLoading();
          let num = 0;
          vm.timer = setInterval(()=>{
            rloading.text = "进度" + num + "%";
            if (nu>=95){
              num = 99;
            }else{
              num += 5;
            }

          }, 500);
          vm.dialogVisible = false;
          vm.$axios.post("/api/upload/", fd, config)
          .then(function(res){
            if(res.data.code ===0){
              rloading.text = "进度" + 100 + "%";
              clearInterval(vm.timer);
              rloading.close(); 
            }
          })
        }
      }
    }
  }
</script>

3、uploadf方法说明:

前端要想传递文件流之外的内容,比如项目id等等,使用FormData(),通过fd.append来添加进去

config设置请求头为multipart/form-data。rLoading是main.js设置的loading效果

Vue.prototype.openLoading = function(){

    const loading = this.$loading({

        lock: true,
        text: "正在加载....",
        spinner: "el-icon-loading",
        background: "rgba(0,0,0,0.7)",
        body: true,
    })
    return loading
}

调用接口vm.$axios.post("/xxx/xxxx", fd, config)来发送数据到后端

4、假显示进度条

通过循环定时来弄一个假的进度条

  vm.timer = setInterval(()=>{
	rloading.text = "进度" + num + "%";
	if (num>=95){
	  num = 99;
	}else{
	  num += 5;
	}

  }, 500);

每隔0.5秒数值加5.到95的时候,直接写死99.如果任务时间长的。就一直在99%位置转圈了。

到接口返回数据时,显示100%。和清除定时器

下一篇博客说明,文件下载导出前端和后端怎么处理,并显示真实进度

【前端】利用ajax实现伪文件异步上传下载 利用ajax可以实现很酷的效果,在不刷新页面的情况下提交表单、修改数据状态等等,可是如果表单里还有input:file可就惨了,ajax不支持文件的处理啊! ajax是使用了浏览器内部的XmlHttpRequest对象来传输XML数据的。既然是Xml的数据传输,那么传输的数据肯定是文本的,而文件上传则需要传输二进制的数据,显然用ajax是不可能的。 可是ajax这么好用,大家也都习惯了这种 阅读详情

相关推荐

Vue项目中使用axios和element ui实现文件上传时的进度显示

Vue项目中使用axios和element ui实现文件上传时的进度显示 html代码如下: <div v-if="progressSeen"> <el-progress :text-inside="true" :stroke-width="15" :percentage="progress" status="success" >&l...

看门猫的博客 3393

vue中 使用假的进度条数字插件:fake-progress

vue中 使用假的进度条数字插件:fake-progress

zlfjavahome的专栏 3144

有哪些更好的方法来实现Vue图片上传并显示进度?

原理及优势Vue 3的Composition API提供了一种更灵活、更模块化的方式来组织组件逻辑。通过使用Composition API,可以将图片上传及进度显示的相关逻辑封装成可复用的函数或模块,使得代码结构更加清晰,易于维护和扩展。实现示例。

alankuo的专栏 1097

Nprogress——页面加载的虚假进度条

Nprogress是一个比较简单的页面加载用进度条(其实也可以用作接口加载进度,或者其它处理加载进度样式)。简单而代码又少。实用度比较高。 **1、Nprogress的原理** Nprogress的原理非常简单,就是页面启动的时候,构建一个方法,创建一个div,然后这个div靠近最底部,用fixed定位住,至于样式就是按照自个或者默认走了。 相信很多小伙伴都知道,一个页面或者一个接口的进度计算是非常复杂的,即便能够计算出来,那么消耗的性能终究是非常大的,这个时候虚假的进度条的作用就显示它的强大了。一开始进入

诸葛韩信--一个前往前端不归路的浪子 4万+

实现Vue文件上传与进度条显示的功能

本文还有配套的精品资源,点击获取 简介:本文介绍如何在Vue.js框架中创建一个文件上传组件,并实现文件上传进度的动态显示。这将涉及自定义组件创建、事件监听、文件上传处理、进度展示和错误处理等方面的详细步骤。通过实现这一功能,可以显著提升用户体验,特别是在处理大文件上传时。实现此功能涉及的技术点包括使用 进行文件分块上传,并利用Vue的双向数据绑定来动态展示上传进度。 Vue.js 是一个轻量级的前端框架,它采用响应式数据绑定和组件化的开

weixin_33072399的博客 895

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 351

设计一个基于vue.js 2.x的虚拟滚动条

前言 记得以前偶然有一次浏览过一个开源的cms项目,发现这个项目的左边的菜单已经超出了windows的宽度,我就好奇为什么没出滚动条呢?然后我仔细一看,发现它左侧有一个小的div,然后我尝试着拖动它,发现竟能和原生的滚动条一样!可以通过查看它的源码,发现了这款滚动条的叫做slimScroll,然后我去它的github仓库看了下,研究了一下源码,给我的感觉是我也能做出来一样的滚动条!通过vue实现!...

weixin_33841722的博客 353

深入瑞芯微ISP生态:手把手配置RK3588上的RKAIQ Server并与Windows端RKISP Tuner联调

本文详细介绍了如何在RK3588平台上配置RKAIQ Server并与Windows端的RKISP Tuner进行联调,以实现高效的ISP调优。从环境准备、服务部署到实战调试,涵盖了IMX415相机适配等关键步骤,帮助开发者快速掌握瑞芯微ISP生态的核心技术。

weixin_32447969的博客 670

vue+express实现文件上传,显示上传进度条

1. 案例介绍 使用前后端分离开发的模式实现文件上传,前端使用Vue框架,后端使用node的express框架,并且显示上传进度条。 效果演示: 2. 核心代码 2.1 环境搭建 前端环境 # 安装Vue脚手架 cnpm i -g @vue/cli # 创建项目 vue create myapp # 进入项目目录 cd myapp # 安装axios cnpm i axios --save # 启动项目 npm run serve 后端环境 # 安装express脚手架 cnpm i -g exp

柯晓楠 6866

ESP32-P4 GPIO双域架构:HP/LP分离、寄存器级控制与低功耗工程实践

GPIO(通用输入输出)是嵌入式系统中最基础且高频使用的硬件接口,其性能、灵活性与功耗特性直接影响产品实时性与续航能力。现代高性能MCU如ESP32-P4通过HP/LP双电源域分离、可编程IO复用(IO MUX)、信号交换矩阵及硬件自动化机制(如ETM事件、Sigma-Delta调制),将传统GPIO升级为兼具模拟能力、亚微秒响应与微安级待机的智能外设子系统。其核心价值在于实现引脚功能动态重构、中断零延迟处理、Deep-sleep期间自主唤醒与多核安全操作。典型应用场景涵盖工业PLC信号采集、电池供电传感器

weixin_35949153的博客 98

基于Python实现基于遥感指数的水体提取

基于Python实现基于遥感指数的水体提取

gis收藏家的博客 6148

Vue.js实现文件上传和进度条显示功能

在现代Web开发中,文件上传是一个常见而重要的需求。无论是在用户上传头像、文档或者其他类型的文件时,良好的用户体验都是至关重要的。在这篇博客中,我们将介绍如何使用Vue.js来实现文件上传功能,同时显示上传进度条,让用户清楚地看到上传的进展。

有我更精彩的博客 2100

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4908

vue+element UI + axios封装文件上传及进度条组件 (转)

阅读目录 1.前言 2.文件上传 3.进度条 4.全部代码 5.效果演示 1.前言 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人。 项目用的是Vue框架,UI库使用的是element UI,前后端交互请求使用的是Vue官方推荐的axios。其中,UI方面主要使用了element UI库中的Upload文件上传组件、Progress进度条组件。 回到顶部 2.文件上传 文件上传功能使用element ..

每天进步一点点儿 5087

2026华为OD机试真题 9月27日 新系统 【均衡调度】

华为OD机试真题 新系统 9月27号【均衡调度】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【均衡调度】多语言题解。

qq_45776114的博客 1769

MTK Android 12 Clone Project 克隆项目

本文介绍了如何使用MTK Android 12 Clone Project 克隆一个新的项目。通过使用绝对路径执行Perl脚本,并根据需要选择升级或降级位数,可以成功地生成一个新的项目并进行编译。希望本文对xdm有所帮助。

我其实什么都不会 942

后台上传:Java+Vue+Websocket实现OSS文件上传进度条功能完整教程

通过以上步骤,我们实现了一个包含上传文件和实时显示上传进度的文件上传功能。前端使用Vue编写了上传组件,后端使用Java和Spring Boot进行文件上传处理。通过调用阿里云OSS服务和监听上传文件字节来计算进度,我们能够实时显示文件上传的进度条,提升用户体验。结束语:人生最大的浪费不是金钱的浪费,而是时间的浪费、认知的迟到。

Da_zhenzai的博客 5626

ISP 芯片作为独立设备节点的驱动实现要点:多平台结构差异与工程部署策略解析

随着 ISP(Image Signal Processor)从 SoC 集成形态向独立芯片模块演进,在多摄系统、高动态场景、AI 图像前处理等需求下,ISP 作为单独设备节点进行驱动设计已成为主流趋势。尤其在多 SoC 平台(如高通、联发科、展锐、Rockchip)中,不同厂商对 ISP 的抽象方式与驱动接口处理存在显著差异。本文以实际工程为基础,从 Linux 内核下的设备注册流程、media\_entity 配置、VideoDevice 分配、数据 DMA 管理、与 sensor 的流同步控制等关键点展

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1462

vue中axios文件上传,可取消,展示进度

import axios from 'axios'; export function uploadFile(url, payload, cancelToken, callback) { return new Promise((resolve, reject) => { axios({ method: 'post', url, data: pa...

weixin_44036130的博客 1954

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vue上传文件并显示进度条

keepFileList 用来备份选择的文件列表,因取消下载后文件列表会被清空,导致不能继续上传。手动使用submit()上传。

IT菜鸟 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

vue中文件上传显示进度条的使用

文件上传显示进度条 1、所用到的UI组件 el-dialog el-upload el-progress 2、基础用法 样式 <el-dialog title="文件上传" :visible.sync="excelVisible" width="40%" :close-on-click-modal="false" :close-on-press-escape="false" center >

qq_43378800的博客 1万+

vue上传文件时显示上传进度

同时,你需要在后端服务器上处理文件上传请求,将上传的文件保存到服务器或云存储中。具体如何处理文件上传请求,取决于你使用的后端框架和存储解决方案。方法中,我们获取到文件对象,并创建一个FormData对象来存储文件数据。要在Vue中显示文件上传进度,可以使用axios库来处理文件上传,并使用axios的。接下来,在你的Vue组件中引入axios库,并添加一个处理文件上传的方法。在模板中,我们添加了一个文件输入框,当选择一个文件时,会触发。上述代码中,我们首先引入了axios库,并在组件的。

weixin_59525879的博客 1776

Vue实现文件上传和oss上传(带进度条和取消上传功能)和拖拽后点击按钮上传(加loading效果)

Vue实现文件上传(带进度条和取消上传功能) 代码实现 这里我只写了单一文件上传的demo,并且只限制了文件大小不能超过5M。如果想限制上传的文件类型,可自行在input标签中进行设置,如果想要实现多个文件一起上传,先要设置input标签属性multiple=“multiple”,然后利用循环将每一个文件数据存入到formData中,最后作为参数传给服务端进行处理。 因为个人习惯原因,我先对axios进行了封装,创建service.js文件,代码如下: import axios from "axios";

牛先森家的博客 4635

使用Spring Boot、VUE实现SSE长连接:跟踪文件上传和任务进度

Server-Sent Events(SSE)是HTML5标准的一部分,允许服务器单向推送消息到客户端。它与WebSocket不同,SSE只支持服务器向客户端推送数据,而不支持客户端向服务器发送数据。SSE的优点在于其实现简单、兼容性好,非常适合不需要双向通讯的场景。SSE是一个轻量级的解决方案,适用于文件上传进度通知和任务执行进度跟踪等场景。通过简单的配置和编码,即可实现服务器向客户端的实时数据推送。如果你的应用场景对实时性要求适中,不妨尝试使用SSE来实现数据推送功能。

weixin_44692308的博客 2697

WebSocket整合springboot显示进度条

springboot和websocket

weixin_40659514的博客 3346

Vue3 + Nodejs 实战 ,文件上传项目--实现文件批量上传(显示实时上传进度)

系列专栏:vue3+nodejs 实战--文件上传欢迎关注在上一篇中,我们创建好了前端Vue3,后端nodejs的项目,并且实现了一个图片上传的功能,地址在:,该篇实现了文件的批量上传并且显示实时的上传进度。

m0_64642443的博客 2366
上一篇: windows 安装node和创建Vue项目
下一篇: Postman内置变量
OneForYou97
博客等级 码龄5年 2粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值