最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)zip文件下載

 更新時間:2021年08月26日 17:12:15   作者:Explorer_S  
這篇文章主要為大家詳細介紹了vue實現(xiàn)zip文件下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue實現(xiàn)zip文件下載的具體代碼,供大家參考,具體內(nèi)容如下

el-button按鈕

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

js處理說明

request 攔截器 request.js

axios 引入并創(chuàng)建 axios 實例,request 攔截器添加

import axios from 'axios'


// 創(chuàng)建axios實例
const service = axios.create({
  baseURL: '',    // api的baseURL
  timeout: 20000, // 請求超時時間
  params: {
 // 請求參數(shù)
  }
});

// request攔截器
service.interceptors.request.use(config => {
  // .... config 添加處理
  ......
  
  return config
}

export default service

request 攔截器在請求前處理,可以添加 http headers 設(shè)置,例如:

1、HTTP Request Headers: token、cookie、session等值添加處理(config.headers[‘后臺取值名稱'] = ‘相關(guān)值';):

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

2、Headers post設(shè)置:如 Content-Type

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

zip文件下載

1、request.js 代碼:

import axios from 'axios'


// 創(chuàng)建axios實例
const service = axios.create({
  baseURL: '',    // api的baseURL
  timeout: 20000, // 請求超時時間
  params: {
 // 請求參數(shù)
  }
});

// request攔截器
service.interceptors.request.use(config => {
  // config 添加 token 值
  config.headers['token'] = getToken();  // getToken()是我的獲取值方法,系統(tǒng)校驗使用
  return config
}

export default service

2、vue頁面引用 request.js

import request from '@/utils/request'

下載處理

// fileName下載設(shè)置名稱,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)
   })
},

后臺處理

根據(jù)請求 /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);
            //設(shè)置Http響應(yīng)頭告訴瀏覽器下載文件名 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;
        }
    }

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何使用Vue做個簡單的比較兩個數(shù)字大小頁面

    如何使用Vue做個簡單的比較兩個數(shù)字大小頁面

    這篇文章主要給大家介紹了關(guān)于如何使用Vue做個簡單的比較兩個數(shù)字大小頁面的相關(guān)資料,實現(xiàn)一個比較兩個數(shù)字大小的頁面,練習(xí)Vue實例的創(chuàng)建、數(shù)據(jù)綁定和事件監(jiān)聽方法,需要的朋友可以參考下
    2023-10-10
  • vue 檢測用戶上傳圖片寬高的方法

    vue 檢測用戶上傳圖片寬高的方法

    這篇文章主要介紹了vue 檢測用戶上傳圖片寬高的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • vue2項目增加eslint配置代碼規(guī)范示例

    vue2項目增加eslint配置代碼規(guī)范示例

    這篇文章主要為大家介紹了vue2項目增加eslint配置代碼規(guī)范示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Vue中v-form標(biāo)簽里的:rules作用及定義方法

    Vue中v-form標(biāo)簽里的:rules作用及定義方法

    文章介紹了在Vue項目中使用ElementUI或ElementPlus組件庫時,如何通過`el-form`標(biāo)簽的`:rules`屬性進行表單驗證,`:rules`屬性用于定義表單項的驗證規(guī)則,包括必填項、格式校驗、長度限制等,文章還展示了如何定義基本驗證規(guī)則和自定義驗證函數(shù),感興趣的朋友一起看看吧
    2025-03-03
  • 淺析vue中的MVVM實現(xiàn)原理

    淺析vue中的MVVM實現(xiàn)原理

    這篇文章主要介紹了淺析vue中的MVVM實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 將 vue 生成的 js 上傳到七牛的實例

    將 vue 生成的 js 上傳到七牛的實例

    本篇文章主要介紹了將 vue 生成的 js 上傳到七牛的實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 一文教你如何一個Vue指令搞定函數(shù)防抖

    一文教你如何一個Vue指令搞定函數(shù)防抖

    防抖(Debounce)在前端開發(fā)中是一種常用的技術(shù),它的作用是限制某個操作在短時間內(nèi)的頻繁觸發(fā),下面我們就來看看如何一個Vue指令搞定函數(shù)防抖吧
    2024-02-02
  • Vue Router應(yīng)用方法詳解

    Vue Router應(yīng)用方法詳解

    在看這篇文章的幾點要求:需要你先知道Vue-Router是個什么東西,用來解決什么問題,以及它的基本使用。如果你還不懂的話,建議上官網(wǎng)了解下Vue-Router的基本使用后再回來看這篇文章
    2022-09-09
  • Vue實現(xiàn)極致舒適的可編輯表格

    Vue實現(xiàn)極致舒適的可編輯表格

    使用ElementPlus的Table啥都好,就是沒有可編輯表格,所以這篇文章就來和大家分享一下Vue實現(xiàn)極致舒適的可編輯表格的方法,希望對大家有所幫助
    2023-06-06
  • vue實現(xiàn)動態(tài)顯示與隱藏底部導(dǎo)航的方法分析

    vue實現(xiàn)動態(tài)顯示與隱藏底部導(dǎo)航的方法分析

    這篇文章主要介紹了vue實現(xiàn)動態(tài)顯示與隱藏底部導(dǎo)航的方法,結(jié)合實例形式分析了vue.js針對導(dǎo)航隱藏與顯示的路由配置、事件監(jiān)聽等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02

最新評論

吉首市| 姚安县| 嘉禾县| 大厂| 大同县| 天镇县| 松滋市| 郓城县| 乌海市| 开平市| 哈巴河县| 玉林市| 昌平区| 南通市| 全州县| 华亭县| 南丰县| 剑川县| 轮台县| 龙泉市| 德阳市| 阜城县| 公主岭市| 胶州市| 岳阳县| 桂东县| 汝州市| 长沙县| 平南县| 东平县| 怀远县| 仙游县| 湖南省| 湖口县| 濉溪县| 瓦房店市| 靖安县| 班戈县| 峡江县| 阿巴嘎旗| 东乡族自治县|