vue文件下载功能_vue实现下载功能

vue文件下载功能_vue实现下载功能vue下载文件常用的几种方式一、直接打开直接打开是指我们直接使用window.open(URL)的方法优点:简单操作缺点:没办法携带token二、我们可以自己封装一个方法,比如如下:importaxiosfrom”axios”import*asauthfrom’@/utils/auth.js’letajax=axios.create({baseURL:process.env.VUE_APP_BASE_API,timeout:100000}

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

vue下载文件常用的几种方式

一、直接打开

直接打开是指我们直接使用window.open(URL)的方法
优点:简单操作
缺点:没办法携带token

二、我们可以自己封装一个方法,比如如下:

import axios from "axios"
import * as auth from '@/utils/auth.js'

let ajax = axios.create({ 
   
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 100000
});

ajax.interceptors.request.use(config => { 
   
        config.headers = { 
   
            Authorization: auth.getToken(),
            // OrgId: auth.getUser().orgId,
            // UserId: auth.getUser().id,
        }
        return config
    },
    err => { 
   
        return Promise.reject(err)
    })

let downloadFile = async (url, formData, options) => { 
   
    await ajax.post(url, formData, { 
   responseType: 'arraybuffer'}).then(resp => download(resp, options))
}

let getFile = async (url, options) => { 
   
    await ajax.get(url, { 
   responseType: 'blob'}).then(resp => download(resp, options))
}

let download = (resp, options) => { 
   
    let blob = new Blob([resp.data], { 
   type: options.fileType ? options.fileType : 'application/octet-binary'})
    //创建下载的链接
    let href = window.URL.createObjectURL(blob)
    downloadBlob(href, options.fileName)
}

let downloadBlob = (blobUrl, fileName, revokeObjectURL) => { 
   
    let downloadElement = document.createElement('a')
    downloadElement.href = blobUrl
    //下载后文件名
    downloadElement.download = fileName
    document.body.appendChild(downloadElement)
    //点击下载
    downloadElement.click()
    //下载完成移除元素
    document.body.removeChild(downloadElement)
    if (revokeObjectURL == null || revokeObjectURL) { 
   
        //释放掉blob对象
        window.URL.revokeObjectURL(blobUrl)
    }
}

let getDownloadFileUrl = async (url, fileType) => { 
   
    let blob
    await ajax.get(url, { 
   responseType: 'blob'}).then(resp => { 
   
        blob = new Blob([resp.data], { 
   type: fileType ? fileType : 'application/octet-binary'});
    })
    return window.URL.createObjectURL(blob);
}

let getDownloadFileUrlByPost = async (url, data, fileType) => { 
   
    let blob
    await ajax.post(url, data, { 
   responseType: 'blob'}).then(resp => { 
   
        blob = new Blob([resp.data], { 
   type: fileType ? fileType : 'application/octet-binary'});
    })
    return window.URL.createObjectURL(blob);
}

let getDownloadFileBlob = async (url, fileType) => { 
   
    let blob
    await ajax.get(url, { 
   responseType: 'blob'}).then(resp => { 
   
        blob = new Blob([resp.data], { 
   type: fileType ? fileType : 'application/octet-binary'});
    })
    return blob;
}

export default { 
   
    ajax,
    downloadFile,
    getFile,
    getDownloadFileUrl,
    getDownloadFileUrlByPost,
    getDownloadFileBlob,
    downloadBlob
}

Jetbrains全家桶1年46,售后保障稳定

然后在我们调用的那个页面中直接引入使用就好啦

//先引用
import ajax from '../../utils/ajax.js'
//使用
ajax.downloadFile('URL',null,{ 
   下载的文件名称})

这样看是不是就挺容易的
希望能帮助到你

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207132.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月2日 下午4:22
下一篇 2025年8月2日 下午5:01


相关推荐

  • Java中的final变量、final方法和final类

    Java中的final变量、final方法和final类1 final 变量 final 关键字可用于变量声明 一旦该变量被设定 就不可以再改变该变量的值 通常 由 final 定义的变量为常量 例如 在类中定义 PI 值 可以使用如下语句 finaldoubleP 3 14 在 Java 中定义全局常量 通常使用 publicstatic 修饰 这样的常量只能在定义是被赋值 publicstatic

    2026年3月19日
    3
  • PL/SQL 入门学习(一)

    PL/SQL 入门学习(一)在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程。我就简单看了一些教程,特此记录一下。首先,先介绍一下PL/SQL是什么?PL/SQL是是由甲骨文公司在90年代初开发,以提高SQL的功能。PL/SQL是嵌入在Oracle数据库中的编程语言之一。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点…

    2022年8月20日
    7
  • css样式鼠标放上去变成手的形状

    css样式鼠标放上去变成手的形状1 用 css 添加手状样式 鼠标移上去变小手 变小手 cursor pointer 2 用 JS 使鼠标变小手 onmouseover 鼠标越过的时候 nm use ver this style cursor hand cursor 其他取值 auto 标准光标 default 标准箭头 pointer hand 手形光标 wait

    2026年3月16日
    2
  • 数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]

    数据分析sql面试必会6题经典_SQL常见面试题[通俗易懂]SQL主要是用来到数据库里查询数据,这是数据分析过程的第一步。你要分析数据,首先要获取数据。所以,这是转行到数据分析岗位的必备技能。感谢@猴子老师的“猴子聊人物”公众号,我入门SQL就是在猴子的“转行数据分析师闯关教程”里学到的。柯本:新手如何学习SQL​zhuanlan.zhihu.com柯本:《MySQL必知必会》学习小结​zhuanlan.zhihu.com一、SQL性能优化题SQL语句…

    2022年4月19日
    213
  • 🎯 Cursor 基础教程

    🎯 Cursor 基础教程

    2026年3月16日
    2
  • MT4安卓版官网下载[通俗易懂]

    MT4安卓版官网下载[通俗易懂]目前,mt4因为特有的优势,吸引了许多投资者使用。MT4是目前最受欢迎的外汇交易平台。如果你的手机是安卓手机,要使用mt4交易,首先就得下载一个安卓版的软件。那么安卓如何下载呢。

    2022年8月15日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号