vue项目下载文件重命名监测进度demo

 更新时间:2023年10月26日 10:49:04   作者:张旭超  
这篇文章主要为大家介绍了vue项目下载文件重命名监测进度demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

摘要

当后台返回一个文件地址给前端,需要前端下载并重命名,展示下载进度。

使用技术:ajax、blob、vue插件file-saver

插件

我们不做过多解释,我们这里只是使用,这是插件教程地址:http://vuejscomponent.com/pac...

项目代码

import FileSaver from 'file-saver'
// URL:文件存放地址,fileName:保存文件名称,downloadType:保存文件格式
const singleFileDownload = (url, fileName, downloadType) => {
  return new Promise((resolve, reject) => {
    if (!url || !fileName) {
      reject('文件不存在')
      return
    }
    var xhr = new XMLHttpRequest()
    xhr.open('GET', url, true)
    xhr.responseType = 'blob'
    // 当请求被发送到服务器时,我们需要执行一些基于响应的任务。
    // 每当 readyState 改变时,就会触发 onreadystatechange 事件。
    // onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
    // readyState
    // 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
    // 0: 请求未初始化
    // 1: 服务器连接已建立
    // 2: 请求已接收
    // 3: 请求处理中
    // 4: 请求已完成,且响应已就绪
    // 用true时,表示发送异步请求,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:
    xhr.onreadystatechange = () => {
      if (xhr.readyState === 4) {
        if (xhr.status === 200 || xhr.status === 0) {
          let file = null
          if (downloadType === 'pdf') {
            file = new Blob([xhr.response], { type: "application/pdf" });
          } else {
            file = new Blob([xhr.response], { type: "application/zip" });
          }
          FileSaver.saveAs(file, fileName)
          resolve('下载成功')
        } else {
          reject(new Error(fileName + '下载失败'), null)
        }
      }
    }
    xhr.addEventListener('progress', (e) => {
      // e.total就是文件的总字节 e.loaded就是文件已加载了多少字节了
      // downloadFile.progress = (e.loaded * 1.0 / e.total * 100).toFixed(2) + '%'
      // downloadFile.progress = (e.loaded / (1024 * 1024)).toFixed(2) + 'M/' + (e.total / (1024 * 1024)).toFixed(2) + 'M'
    })
    xhr.send()
  })
}

以上就是vue项目下载文件重命名监测进度demo的详细内容,更多关于vue文件下载进度检测的资料请关注脚本之家其它相关文章!

相关文章

  • nuxt实现封装axios并且获取token

    nuxt实现封装axios并且获取token

    这篇文章主要介绍了nuxt实现封装axios并且获取token,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 详解Vue中状态管理Vuex

    详解Vue中状态管理Vuex

    vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试。
    2017-05-05
  • Vue3双token加密登录及注册方式

    Vue3双token加密登录及注册方式

    本文介绍了双Token机制在Vue3应用中的实现,包括登录/注册、请求拦截、响应拦截、Token存储、退出登录等流程,重点是Token的刷新逻辑和安全性
    2025-03-03
  • 详解vue如何给特殊字段设置插槽

    详解vue如何给特殊字段设置插槽

    这篇文章主要为大家详细介绍了vue如何实现给特殊字段设置插槽,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以学习一下
    2023-09-09
  • Vue+Element实现表格单元格编辑

    Vue+Element实现表格单元格编辑

    这篇文章主要为大家详细介绍了Vue+Element实现表格单元格编辑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue.js实现九宫格图片展示模块

    Vue.js实现九宫格图片展示模块

    这篇文章主要为大家详细介绍了Vue.js实现九宫格图片展示模块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 为Vue3 组件标注 TS 类型实例详解

    为Vue3 组件标注 TS 类型实例详解

    这篇文章主要为大家介绍了为Vue3 组件标注 TS 类型实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue3 证件识别上传组件封装功能

    vue3 证件识别上传组件封装功能

    证件图片识别上传根据业务需要,经常涉及到证件上传,例如身份证上传、银行卡、营业执照等信息,根据设计师的设计,单独封装了一个上传组件,这篇文章主要介绍了vue3 证件识别上传组件封装,需要的朋友可以参考下
    2023-05-05
  • Vue在css中图片路径问题解决的配置方法

    Vue在css中图片路径问题解决的配置方法

    这篇文章主要为大家介绍了Vue在css中图片路径问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 基于前端VUE+ElementUI实现table行上移或下移功能(支持跨页移动)

    基于前端VUE+ElementUI实现table行上移或下移功能(支持跨页移动)

    有时候需要前端实现上移和下移功能,下面这篇文章主要给大家介绍了关于如何基于前端VUE+ElementUI实现table行上移或下移(支持跨页移动)的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07

最新评论