当前位置:网站首页 > Vue.js开发 > 正文

vue3中,下载模板(一)

vue3中,下载模板(一)

效果

1

在这里插入图片描述

2

在这里插入图片描述

3

在这里插入图片描述

1、页面

index.vue

<el-button type="primary" @click="fileDownload">下载模板</el-button> <script setup> import { exportByPage} from '@/api/variousUnits/expert' import { downloadFileCom } from '@src/hooks/useFolesUtils.js' // 下载 const fileDownload = async () => { await exportByPage().then((res) => { downloadFileCom(res, '指南编制专家模板') }) } </script> 
2、接口

src\app\science\api\variousUnits\expert.js

//专家推荐-模板导出下载 export const exportByPage = (data) => { 
    return request({ 
    url: `${ 
     sciencePostUrl}/recomd/template`, method: 'post', data, responseType: 'blob', }) } 
3、file流文件处理

src\hooks\useFolesUtils.js

const path = require('path') import { 
    ref } from 'vue' export const downloadFileCom = (res, fileName) => { 
    const extname = path.extname(fileName) if (res && res.data) { 
    const blob = ref(null) switch (extname) { 
    case '.xlsx': blob.value = new Blob([res.data], { 
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', }) break case '.doc': blob.value = new Blob([res.data], { 
    type: 'application/msword', }) break case '.docx': blob.value = new Blob([res.data], { 
    type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', }) break case '.rar': blob.value = new Blob([res.data], { 
    type: 'application/x-rar-compressed', }) break case '.zip': blob.value = new Blob([res.data], { 
    type: 'application/zip,charset=utf-8', }) break case '.pdf': blob.value = new Blob([res.data], { 
    type: 'pplication/pdf', }) break case '.jpg': blob.value = new Blob([res.data], { 
    type: 'image/jpeg', }) break default: blob.value = new Blob([res.data], { 
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', }) break } console.log(blob.value, ' blob.value ') const downloadElement = document.createElement('a') const href = window.URL.createObjectURL(blob.value) //创建下载的链接 downloadElement.href = href downloadElement.download = fileName.toString().trim() //下载后文件名 document.body.appendChild(downloadElement) downloadElement.click() //点击下载 document.body.removeChild(downloadElement) //下载完成移除元素 window.URL.revokeObjectURL(href) //释放掉blob对象 } else { 
    throw '下载文件无返回值' } } 
到此这篇vue3中,下载模板(一)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue3中,下载模板(二)——file流文件处理-简约版 & 接口responseType-blob2024-12-01 17:36:05
  • vue3中,下载模板(三)——前端本地下载附件2024-12-01 17:36:05
  • vue3中,下载模板并进行上传导入文件 & 父子组件props传函数两种写法-传动态接口2024-12-01 17:36:05
  • vue3中,表格导出excel、批量操作表格、分页、loading、router.push跳转2024-12-01 17:36:05
  • vue3封装表格弹框组件——表格单选、axios动态接口、toRefs()用法、loading自定义、表格内容超出高度滚动2024-12-01 17:36:05
  • vue3中,form表单校验之特殊字符校验、手机号、身份证号、百分制数字 & route和router的写法 & setup的两种用法 & rules中校验之blur和change2024-12-01 17:36:05
  • vue3中,校验方法之身份证号脱敏、校验数字长度、特殊字符校验2024-12-01 17:36:05
  • js实现页面跳转链接的几种方式2024-12-01 17:36:05
  • js将数字转换成万、亿、万亿2024-12-01 17:36:05
  • js中,删除arr1中比arr2中多的对象之filter、find & 数组中是否有相同对象之every、some & 删除数组中不是相同的对象 & 对象数组,去重后合并2024-12-01 17:36:05
  • 全屏图片