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


相关推荐

  • 路由器刷机教程图解_小米路由器刷机教程[通俗易懂]

    路由器刷机教程图解_小米路由器刷机教程[通俗易懂]小米路由器刷机教程小米路由器刷机教程登陆路由器设置页面,刷新官方固件.使用路由器助手,自动检查并自动更新固件.使用u-boot模式,可刷新任何固件.小编温馨提示:你需要先在小米官网下载好相应固件到本地,再进入路由器设置,进入系统升级,选择下载好的固件进行系统升级….其他2016/06/10小米助手刷机教程小米助手刷机教程小米助手的刷机功能只能算是小米MIUI系统升级功能,如果无法开机…

    2022年7月21日
    52
  • python join函数_Python join()函数原理及使用方法

    python join函数_Python join()函数原理及使用方法函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串os.path.join():将多个路径组合后返回一、函数说明1、join()函数语法:’sep’.join(seq)参数说明sep:分隔符。可以为空seq:要连接的元素序列、字…

    2025年7月31日
    3
  • python实现卷积操作

    python实现卷积操作文章目录调用tf.nn.conv2d()实现卷积自己实现卷积函数我们知道,tensorflow里面自带卷积函数,tf.nn.conv2d()就可以实现相关功能,本文主要是自己实现卷积操作,然后和tf.nn.conv2d()函数的结果对比,验证正确性。调用tf.nn.conv2d()实现卷积首先是调用卷积函数实现卷积操作:这里说明一下conv2d的定义及参数含义:参考【定义:】tf.n…

    2022年5月28日
    36
  • hibernate中query.uniqueResult()

    hibernate中query.uniqueResult()Queryq=session.createQuery(“selectt,pfromTeachert,Personpwheret.personid=p.id”);得到的两个对象组成的数组

    2022年7月2日
    21
  • C语言的标识符命名规则

    C语言的标识符命名规则

    2021年9月27日
    58
  • cmake eigen_cmake链接动态库

    cmake eigen_cmake链接动态库在自己的程序中使用Eigen库,用cmake实现

    2022年10月18日
    2

发表回复

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

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