• Vue实现下载及文件重命名


    效果如下:

     

     实现步骤:

    html: 

    1. <el-table-column prop="name" label="操作" align="center" header-align="center" width="165">
    2. <template slot-scope="scope">
    3. <el-button type="text" size="small" @click="downloadExport(scope.row)">下载el-button>
    4. template>
    5. el-table-column>

    JS: 

    1. downloadExport(row){
    2. var nowTime = new Date().UTF2()
    3. let url = process.env.BASE_Url+encodeURI(row.fileUri)
    4. const config = {
    5. methods:'get',
    6. url:url,
    7. responseType:'blob'
    8. }
    9. axios(config).then((res)=>{
    10. const link = document.createElement('a')
    11. const url = window.URL.createObjectURL(new Blob([res.data],{ type: 'application/vnd.ms-excel' }))
    12. link.setAttribute("href",url);
    13. link.setAttribute('download',row.origin + '_'+nowTime+'xlsx')
    14. link.click()
    15. })
    16. }

    代码解析:

    因为需求是:不仅要实现下载,而且所下载的文件名需要自定义(文件名+时间)

    我这里做了时间的格式化

    var nowTime = new Date().UTF2()   

    当前下载文件的路径

    let url = process.env.BASE_Url+encodeURI(row.fileUri)    

    调用参数

    const config  

    生成一个a标签

    const link = document.createElement('a')      

    创建一个对象

    window.URL.createObjectURL(new Blob([res.data],{ type: 'application/vnd.ms-excel' }))       

    bold参数是一个file对象或者bold对象

    objectURL是生成的对象URL,通过这个URL,可以获取到所指定文件的完整内容

    如果不指定文件类型的话,默认为txt类型,反正我是遇到了,所以我制定了文件类型

    { type: 'application/vnd.ms-excel' }

    增加一个指定名称和值的新属性,或者把一个现有属性设定为指定的值

            这里是给创建的 a 标签增加属性href和值url

            格式:

                    name:要设置的属性名

                    value:要设置的属性值

    link.setAttribute("href",url);

    再给创建的a标签指定 download 属性,并且拼接文件名及时间

    link.setAttribute('download',row.origin + '_'+nowTime+'xlsx')

    最后让创建的新属性触发点击事件

    link.click()

  • 相关阅读:
    SpringBoot WebSocket STOMP
    Zookeeper - Java API 对节点操作
    【Mask2Former】 解决代码中一些问题
    “ChatGPT们”的淘金时代
    leetcode做题笔记171. Excel 表列序号
    (其他) 剑指 Offer 64. 求1+2+…+n ——【Leetcode每日一题】
    战略合作 | 零数科技携手中智关爱通共建基于区块链的新人力服务网络
    【Spring Boot 集成应用】RocketMQ的集成用法(下)
    C语言标准规范版本介绍
    【MicroPython RP2040】通过ADC调节PWM输出示例
  • 原文地址:https://blog.csdn.net/qq_17211063/article/details/127977011