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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 波束形成

    波束形成1.问题描述:数字波束形成器是全数字化超声成像的基础,也是高性能彩超的保证。数字波束形成包括发射和接收两个部分。数字是接收波束形成的关键技术,它通过使用顺序储存器FIFO或随机存取存储器双端口RAM替代模拟式波束形成器中的LC延时线来实现波束聚焦,即以数字延时补偿替代模拟延时的补偿。数字延时不仅能实现精确延时补偿,实现所谓的逐点跟踪式动态聚焦,还能方便实现动态孔径、动态变迹控制,克服模拟式延时补偿存在的诸多固有缺点,通道数增加不受限制,是图像品质得以全面提高。2.部分程序:close..

    2022年6月15日
    39
  • vsphere vsan配置_快船队最新消息

    vsphere vsan配置_快船队最新消息一直想抽空写写vSAN这个产品,在15年的时候笔者第一次听说vSAN这个产品,当时VMware还以VDI最佳拍档的方式去推广vSAN,短短两年的时间,vSAN经过多个版本的更新迭代,无论从功能还是稳定性上均有很大提升,最广泛的应用也由VDI变为了承载核心业务。这篇文章总结一下笔者对vSAN的一些学习和使用经验,简单介绍下vSAN,希望可以用最少的文字介绍清楚…

    2025年6月2日
    2
  • 报告上集 | 《认文识字·中文字信息精准化》报告「建议收藏」

    您好,欢迎关注《认文识字——中文字信息精准化》报告。我是安秀。这里说的“中文字”,是“中国文字”的简称,也就是我们常说的“汉字”。【认文识字】是以“中文字信息精准化”为导向,而沉淀出的一整个“从文到字”脉络关系大网和相应的信息数据。今天发表出来,跟您分享。壹○中文字信息精准化研究与分享中文字,是人类文明进程的全息存储;同时,也是人类智能的载体之一。它以多维多元的编码方式,将人脑多维智力运行过程、全息呈现。使用【认文识字】的信息数据,可以在包括人工智能领域的各行各业各领域中,做

    2022年4月7日
    44
  • mac ll命令_linux终端命令

    mac ll命令_linux终端命令首先,cd到home下:cd~再编辑.bash_profile文件vim.bash_profile添加如下内容aliasll=’ls-l’#aliasl=’ls-alhF’#aliasla=’ls-AFh’#aliasll=’ls-lhAF’执行source.bash_profile命令,使内容生效source.bash_profi…

    2022年9月24日
    2
  • k8s中Evicted pod 是如何产生的

    k8s中Evicted pod 是如何产生的文章目录事件背景分析被驱逐的原因节点资源不足导致实例被驱逐kubelet驱逐Pod时与资源处理相关的已知问题驱逐Pod未被删除原因分析解决方案结语事件背景最近在线上发现很多Pod处于Evicted状态,通过podyaml可以看到实例是因为节点资源不足被驱逐,但是这些pod并没有被自动清理,平台的大部分用户在操作时看到服务下面出现EvictedPod时会以为服务有问题或者平台有问题的错觉,影响了用户的体验。而这部分Evicted状态的Pod在底层关联的容器其实已经被销毁了,对用户的

    2022年5月17日
    43
  • commons-beanutils_Bean @session

    commons-beanutils_Bean @sessionBeanUtils介绍       所谓BeanUtils为何要开发呢,每个工程师或许在写JavaBean的时候,都会乖乖地去写getters和setters,就是getXXX()及setXXX()methods,但是当你的object是动态产生的,也许是用档案,也许是其它原因,那你该如何去存取数据呢!!几个例子你可能会用到BeanUtils,当…

    2025年9月6日
    6

发表回复

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

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