vue公共下载文件方法

本文介绍如何在Vue项目中创建一个全局的文件下载方法,该方法可以在应用的任何页面调用,方便快捷地处理文件下载需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在main.js中定义一个公共的方法

// method: 传参方式get或post 
// url:接口地址
// name: 下载文件名
//key: 本项目中的使用情况 可不要
// data: 需要的传参数据(一般get不需要)
const exportExsl = (method,url,name,key = 'BASE_URL',data = {})=>{
  fetch(`http://${window.online_config[key] + url}`,{
    method,
    responseType: 'blob',
    headers:{
      Authorization:'Basic ' +  localStorage.getItem('Access-Token'),//定义token
      "Content-Type": "application/json;charset=utf-8",
    },
    body:method  == 'post' ? JSON.stringify(data) : null
    })
    .then(res => {   
      console.log('res.headers',res)  
        return res.blob();
    })
    .then(blob => {
        let link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = name;
        link.click();
        window.URL.revokeObjectURL(link.href);
    })
    .catch((err) => {
      throw '异常:'+ err
    });
  
}

// 导出
Vue.prototype.$exportExsl = exportExsl

二、页面中的使用方法

       <a-button class="btn_action" @click="$exportExsl('get','/terminalUser/excleTemplate','终端用户.xlsx')">
            导出
        </a-button>
  handleDownloadQrcode(blob) { 
      let list = [blob.id];
      let timestamp = new Date().getTime();
      this.$exportExsl("post","/qr_code/download",timestamp + ".zip","BASE_URL",list)
    },
### 创建和使用 Vue 公共方法 在 UniApp 中创建和使用 Vue 公共方法可以通过多种方式实现,其中一种常见的方式是利用 Vue.js 提供的 `mixin` 功能[^1]。 #### 利用 Mixin 实现公共方法 通过定义一个全局混入 (global mixin),可以在所有组件实例中访问到特定的方法或属性。下面是一个简单的例子: ```javascript // main.js 或其他入口文件 import { createApp } from 'vue'; import App from './App.vue'; const myMixin = { methods: { commonMethod() { console.log('这是一个通用方法'); } } }; createApp(App).mixin(myMixin).mount('#app'); ``` 这样做的好处在于任何地方都可以直接调用 `this.commonMethod()` 而无需重复声明相同逻辑的函数。 对于更复杂的场景或者为了更好的模块化设计,则建议采用插件形式注册全局功能。这种方式不仅限于方法还包括指令、过滤器等扩展能力[^5]。 #### 插件模式下的全局方法注入 如果希望以更加结构化的形式引入公共资源和服务,那么构建自定义插件可能是更好的选择。这涉及到编写一个遵循一定规范的对象,并将其传递给应用实例的 `.use()` 方法。 ```javascript // plugins/globalMethodsPlugin.js export default { install(app, options) { app.config.globalProperties.$myGlobalFunc = function () { alert('来自全局插件的功能'); }; } } // main.ts or main.js import GlobalMethodsPlugin from '@/plugins/globalMethodsPlugin' const app = createApp(App); app.use(GlobalMethodsPlugin); // 注册插件 app.mount('#app'); ``` 上述代码片段展示了怎样封装并暴露 `$myGlobalFunc` 函数作为应用程序级别的工具集的一部分。 值得注意的是,在实际项目里应当谨慎考虑性能影响以及潜在命名冲突的风险,合理规划共享资源的作用域与生命周期管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值