首页 > 其他分享 >vue实现接受后台文件流转文件并下载

vue实现接受后台文件流转文件并下载

时间:2023-07-06 09:55:47浏览次数:34  
标签:文件 vue url 流转 link blob let document 下载

接受到的文件流是这样的

 

1,首先在请求时加上  responseType:'blob'

 request({
    url: "url",
    method: "get",
    responseType:'blob',  //加上这一行
    params:params
 })

 

 

2,在获取到返回来的文件流后进行处理

 

//传的参数为图片
downloadImage({file_url:imgUrl}).then( res => {
       //加上{type:"application/octet-stream;"}
       let blob = new Blob([res],{type:"application/octet-stream;"})
       const url = window.URL.createObjectURL(blob);
       const link = document.createElement('a');
       link.href = url;
       //拆分图片地址保留文件名称及格式
       link.setAttribute('download',this.splitStr(imgUrl));
       document.body.appendChild(link);
       link.click();
})

//只保留地址信息最后的文件名称及格式
splitStr(str){
    return str.split('/')[str.split('/').length - 1]
},

 

  

 

3,如果是用的element-ui的图片预览下载,在功能栏位置增加下载按钮并实现下载,如下

html部分

<el-image
        @click="clickImage(imgUrl)"
        class="color-squre"
        :src="imgUrl"
        :preview-src-list="[imgUrl]"
        fit="cover">
      <div slot="error" class="image-slot-dvi">
           无图片
     </div>
</el-image>

  

js部分

//预览图添加下载按钮
    clickImage(img){
      this.$nextTick(() => {
        let wrapper = document.getElementsByClassName(
        'el-image-viewer__actions__inner'
        )
        //下载图标
        let downImg = document.createElement('i')
        downImg.setAttribute('class', 'el-icon-download')
        wrapper[0].appendChild(downImg)
        if (wrapper.length > 0) {
        this.wrapperElem = wrapper[0]
        //调用下载图片事件
        this.downLoadFile()
        }
      })
    },
    downLoadFile() {
      this.wrapperElem.addEventListener('click', (e) => {
        let className = e.target.className
        if (className === 'el-icon-download') {
          let imgUrl = document.getElementsByClassName(
          'el-image-viewer__canvas'
          )[0].children[0].src
          //下载接口
          downloadImage({file_url:imgUrl}).then( res => {
            let blob = new Blob([res],{type:"application/octet-stream;"})
            const url = window.URL.createObjectURL(blob);
            const link = document.createElement('a');
            link.href = url;
            link.setAttribute('download',this.splitStr(imgUrl));
            document.body.appendChild(link);
            link.click();
          })
        }
      })
},

  

 

标签:文件,vue,url,流转,link,blob,let,document,下载
From: https://www.cnblogs.com/ghc520/p/17531268.html

相关文章

  • 使用vue-super-flow的使用进行工作流的梳理
    1.安装依赖npminstallvue-super-flow2.在页面中引用<template><super-flow></super-flow></template><script>importSuperFlowfrom'vue-super-flow'import'vue-super-flow/lib/index.css'exportdefault{......
  • 前端Vue自定义顶部导航栏navBar 导航栏搜索框searchBar 导航栏右侧菜单按钮button
    前端Vue自定义顶部导航栏navBar导航栏搜索框searchBar导航栏右侧菜单按钮button,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13342效果图如下:cc-headerSearch使用方法<!--icon:右侧菜单图标@searchClick:搜索点击 @rigIconClick:右......
  • EasyExcel实现excel文件重复多次写入和导出&下载文件
    一、EasyExcel实现excel文件的导出官方文档导入依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>......
  • 前端Vue自定义带历史记录的搜索框组件searchBar 支持搜索输入框清空 搜索历史存储记录
    前端Vue自定义带历史记录的搜索框组件searchBar支持搜索输入框清空搜索历史存储记录清除,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13343效果图如下:cc-hisSearchBar使用方法//不同的业务功能历史记录设置不同存储keyconstkStora......
  • WordPress主题,当前页面使用了哪个template模板文件?
    对于页面与模板的对应情况一般都是能确定的,不过新朋友一时不熟悉可能还是需要花一点时间。其实,可以有一个小技巧,可以快速确定当前页面对应的模板文件。想要实现上面的效果,只需将下面代码加入主题的 functions.php 文件。functionzhuige_admin_bar_init(){//Ifnota......
  • win10 用 everything 搜索磁盘上所有软链接,硬链接文件
    方法一:Toviewreparsetargets(filesandfolders)andhardlinktargets(files):InEverything1.5,rightclicktheresultlistcolumnheaderandclickAddcolumns....Searchfor:reparseSelectReparseTargetandclickOK.rightclicktheresultlistcolu......
  • vuex的使用
    下载安装npmivuex搭建vuex环境1.创建文件:src/store/index.js//引入Vue核心库importVuefrom'vue'//引入VueximportVuexfrom'vuex'//应用Vuex插件Vue.use(Vuex)//准备actions对象——响应组件中用户的动作constactions={}//准备mutations对象——修改state......
  • axios请求下载Excel文件流
    注意求类型:responseType:'blob'axios({url:url,method:'post',data:data,responseType:'blob'}).then(res=>{letblob=newBlob([res.data])leturl=window.URL.createObjectURL(bl......
  • oracle的tnsname.ora(网络服务名配置文件)
    #tnsnames.oraNetworkConfigurationFile:E:\oracle\oracleBaseMenu\oracleMainMenu\network\admin\tnsnames.ora#GeneratedbyOracleconfigurationtools.#sqlplususername/password@service_name普通用户登录#sqlplususername/password@service_nameassys......
  • linux 怎么定时去执行一个 .sh 文件
    在Linux中,你可以使用crontab来定时执行一个.sh文件。Crontab是一个定时任务管理工具,它允许你在指定的时间间隔内运行命令或脚本。下面是一些使用crontab定时执行.sh文件的步骤:打开终端或SSH连接到你的Linux服务器。输入以下命令以编辑crontab文件:crontab-......