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


相关推荐

  • Spring中的AOP以及切入点表达式和各种通知

    Spring中的AOP以及切入点表达式和各种通知上篇讲了动态代理:Java中动态代理的两种方式JDK动态代理和cglib动态代理以及区别我们用上篇的做法去实现目标方法的增强,实现代码的解耦,是没有问题的,但是还是需要自己去生成代理对象,自己手写拦截器,在拦截器里自己手动的去把要增强的内容和目标方法结合起来,这用起来还是有点繁琐,有更好的解决方案吗?答案是:有的!那就是Spring的AOP,这才是咱们最终想引出来的重点!有了Sprin…

    2022年7月27日
    10
  • HTML中的空格字符_dw空格代码怎么打

    HTML中的空格字符_dw空格代码怎么打在学习插入空格字符代码书写方法之前,我们要知道,html代码的空格字符,在浏览器中,总会被压缩为一个字符!也就是说,你在html文本中输入多个空格,但在浏览器中,只会保留显示一个字符,其余的都将被浏览器删除。再打个比如,你在html中输入了8个空格字符,如下图所示:在显示之前,浏览器会删除其余7个,而只保留一个空格字符,如下图所示:也就是说,无论你输入多少个空格字符,在浏览器中显示的永远和上图一样…

    2025年11月18日
    3
  • vue路由懒加载的实现方式_vue路由懒加载实现原理

    vue路由懒加载的实现方式_vue路由懒加载实现原理1、当一个vue项目很大的时候,对于一些“暂时”用不到的组件,我们可以不进行加载,等到用到次组件时再加载。这样可以优化spa应用首次加载白屏情况,也给用户更好的体验。这样就是vue路由懒加载。2、常用的懒加载方式有两种:即使用ES中的import和vue异步组件2.1未使用懒加载importHelloWorldfrom’@/components/HelloWorld…

    2022年10月6日
    2
  • oracle自动更新视图,Oracle 视图及视图更新「建议收藏」

    创建视图createOrReplaceviewtasselectT1.t11f1,T1.t12f2,T2.t22f3fromT1,T2WhereT1.t11=T2.t11;视图更新CreateOrReplaceTriggerTrg_InsUpdDel_tInsteadOfInsertorupdateordeleteontforeachrowDec…

    2022年4月12日
    55
  • JS经常使用字符串处理方法总结

    JS经常使用字符串处理方法总结

    2022年2月6日
    239
  • 0基础如何自学软件编程开发

    0基础如何自学软件编程开发0基础如何自学软件编程开发?学习软件编程首先需要选择一门编程语言,如C或JAVA语言,作为基础编程语言学习,掌握语言的逻辑,学习语法,其实编程实质上就是思路的运用,编程思路有了再想学习其他的编程语言就会变得顺风顺水。软件编程开发,对于现在的学生来讲到底有多重要呢?现在是互联网快速发展的时期,在几年前谁都没有想到人们在手机上就可以完成衣食住行等所有的活动,互联网也在慢慢的改变着未来一代人。互联网广泛覆盖了我们的生活,真正实现了“远在天边,近在眼前”,在我们的生活工作中都有互联网存在的身影,随着IT行业的越

    2022年5月7日
    77

发表回复

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

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