您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax |

vue实现zip文件下载

51自学网 2022-05-02 21:33:26
  javascript

本文实例为大家分享了vue实现zip文件下载的具体代码,供大家参考,具体内容如下

el-button按钮

<el-button size="mini" type="success" @click="downloadHandle(fileName, fileLocation)">下载</el-button>

js处理说明

request 拦截器 request.js

axios 引入并创建 axios 实例,request 拦截器添加

import axios from 'axios'// 创建axios实例const service = axios.create({  baseURL: '',    // api的baseURL  timeout: 20000, // 请求超时时间  params: { // 请求参数  }});// request拦截器service.interceptors.request.use(config => {  // .... config 添加处理  ......    return config}export default service

request 拦截器在请求前处理,可以添加 http headers 设置,例如:

1、HTTP Request Headers: token、cookie、session等值添加处理(config.headers[‘后台取值名称'] = ‘相关值';):

(1)config.headers[‘token'] = ‘token的值';
(2)config.headers[‘cookie'] = ‘cookie的值';
(3)config.headers[‘session'] = ‘session的值';

2、Headers post设置:如 Content-Type

上传文件使用:config.headers.post[‘Content-Type'] = ‘multipart/form-data';

zip文件下载

1、request.js 代码:

import axios from 'axios'// 创建axios实例const service = axios.create({  baseURL: '',    // api的baseURL  timeout: 20000, // 请求超时时间  params: { // 请求参数  }});// request拦截器service.interceptors.request.use(config => {  // config 添加 token 值  config.headers['token'] = getToken();  // getToken()是我的获取值方法,系统校验使用  return config}export default service

2、vue页面引用 request.js

import request from '@/utils/request'

下载处理

// fileName下载设置名称,fileLocation文件存储名称downloadHandle(fileName,fileLocation) {   let prome = {     fileLocation: fileLocation   }   request.post(    '/api/downloadFile',     prome,     {      responseType: 'blob',      timeout: 60000    }   ).then(response => {     if (!response.size) {       this.$message({         message: '没有可下载文件',         type: 'warning'       })       return     }     const url = window.URL.createObjectURL(new Blob([response]))     const link = window.document.createElement('a')     link.style.display = 'none'     link.href = url     link.setAttribute('download', fileName+'.zip')     document.body.appendChild(link)     link.click()   }).catch((data) => {     console.log(data)   })},

后台处理

根据请求 /api/downloadFile 后台 Java API 处理

package com.web.controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.File;import java.io.FileInputStream;import java.io.OutputStream;import java.net.URLEncoder;import java.util.Map;@RestController@RequestMapping("/api")public class DownloadFileDemo {    /**     * 文件下载     * @param tranNap     * @param request     * @param response     */    @RequestMapping(value = "/downloadFile")    public void downloadFile(@RequestBody Map<String, Object> tranNap, HttpServletRequest request, HttpServletResponse response) {        String fileLocation = tranNap.get("fileLocation")+"";        try {            String filePath = "D:/file/" + fileLocation + ".zip";            //得到该文件            File file = new File(filePath);            if (!file.exists()) {                System.out.println("[文件下载]没有可下载的文件");                return;            }            FileInputStream fileInputStream = new FileInputStream(file);            //设置Http响应头告诉浏览器下载文件名 Filename            response.setHeader("Content-Disposition", "attachment;Filename=" + URLEncoder.encode(fileLocation+".zip", "UTF-8"));            OutputStream outputStream = response.getOutputStream();            byte[] bytes = new byte[2048];            int len = 0;            while ((len = fileInputStream.read(bytes)) > 0) {                outputStream.write(bytes, 0, len);            }            fileInputStream.close();            outputStream.close();        } catch (Exception e) {            System.out.println("[文件下载]下载文件异常");            e.printStackTrace();            return;        }    }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持wanshiok.com。


Echarts Bar横向柱状图实例代码
Vue 详解mixins混入用法大全
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1