vue下载文件

import fileDownload from ‘js-file-download‘

let params = {
          "token" : "123456",
          "id" : "12345678901234567",
          "filename":"123.rar",
          "pckid":"5",
          "dty":"tbox",
          "cml":"300",
          "version":"102",
        };
        let that = this;
        API.test2(params).then(function (result) {
          if (result) {
            // console.log(result);
            /*console.log(result.headers[‘Content-Disposition‘]);
            let filename = result.headers[‘Content-Disposition‘].substring(result.headers[‘Content-Disposition‘].indexOf("=")+1 );
            console.log("filename",filename);*/
            fileDownload(result,"123.rar");
            /*let blob = new Blob([result], {type: "application/octet-stream"});
       let objectUrl = URL.createObjectURL(blob);
       window.location.href = objectUrl;*/
          }
        }).catch(function (error) {
          that.$message.error({showClose: true, message: ‘请求出现异常‘, duration: 2000});
        });
 test2:params => {
    return API.POST2(`apitbox/download`,params,{responseType: ‘blob‘})//{responseType: ‘blob‘}一定要加,否则文件出错
  },
export const POST2 = (url, params,config) => {
  return axios.post(`${base}${url}`, params,config).then(res => res.data).catch(function (error) {
    alert("请求出现异常");
    console.log(error);
    // window.location.reload();
  });
}

后台springboot:

    // 文件下载相关代码
    @RequestMapping(value = "/download", method = { RequestMethod.POST, RequestMethod.GET }) // postman,url,3.tbox请求下载文件,暂时只支持单文件下载。
    public String downloadFile(@RequestBody Map<String, String> reqMap, HttpServletRequest request, HttpServletResponse response) { // version是路径
        String token1 = reqMap.get("token");// request.getParameter("token");
        String uuid1 = reqMap.get("id");// request.getParameter("uuid");
        String fileName = "upload\\" + reqMap.get("dty") + "\\" + reqMap.get("cml") + "\\" + reqMap.get("version") + "\\" + reqMap.get("filename");

        String name = fileName.substring(fileName.lastIndexOf("\\") + 1);

        try {
            apiTboxService.saveDownloadfile(reqMap.get("pckid"), uuid1, name, CommomUtil.DateFormat(), "download packages start",CommomUtil.servernum);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        if (fileName != null) {
            // 设置文件路径
            /* String realPath = request.getServletContext().getRealPath("//WEB-INF//"); */
            String realPath = request.getSession().getServletContext().getRealPath("/");
            File file = new File(realPath, fileName);
            if (file.exists()) {
                response.setContentType("application/force-download");//
                response.setHeader("content-type", "application/octet-stream");
                response.addHeader("Content-Disposition", "attachment;fileName=" + name);// 设置文件名
                byte[] buffer = new byte[5*1024 * 1024];
                FileInputStream fis = null;
                BufferedInputStream bis = null;
                try {
                    fis = new FileInputStream(file);
                    bis = new BufferedInputStream(fis);
                    OutputStream os = response.getOutputStream();
                    int i = bis.read(buffer);
                    while (i != -1) {
                        os.write(buffer, 0, i);
                        i = bis.read(buffer);
                    }
                    System.out.println("--------------download----------------success");
                    try {
                        apiTboxService.updateDownloadfile(reqMap.get("pckid"), uuid1, "success");
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("download---error");
                    try {
                        apiTboxService.updateDownloadfile(reqMap.get("pckid"), uuid1, e.toString());
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } finally {
                    if (bis != null) {
                        try {
                            bis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return null;
    }

原文地址:https://www.cnblogs.com/yaowen/p/9060268.html

时间: 2024-12-21 20:25:36

vue下载文件的相关文章

wp8通过WebClient从服务器下载文件

通过WebClient从Web服务器下载文件,并保存到wp8手机应用程序的独立存储. 我们可以通过利用webClient_DownloadStringCompleted来获得下载完成所需要的时间,用Stopwatch得到下载的总时间. 通常我们都将上传.下载作为异步事件来处理,以便不阻止主线程. String url = "http://172.18.144.248:8080/upload/" + filename; WebClient client = new WebClient()

阿里云服务器(Windows)如何下载文件

背景:公司只有我一个技术,在我之前还有一个老技术,属于兼职状态,为了尽快熟悉公司网站及app项目情况,我联系了老技术,请他尽快将代码发给我,他说代码文件过大,问我能不能连上服务器下载.百度了很多,都不得要领,便有了这篇文的因由.当然,后来发现是自己百度的方向不对,这是后话暂且不提. 1.登录阿里云官网(https://www.aliyun.com/),[控制台]点进去 2.最左边列表点击[云服务器ECS] 3.[运行中]点进去 4.获取公网IP地址 5.[开始]菜单输入mstsc,打开本机的"远

TreadAPP-使用线程下载文件

package main; /** * Created by lxj-pc on 2017/6/27. */public class TreadApp {//volatile 线程间共享变量 private static volatile boolean isExit=false;//static成员不能访问非static成员 public static void main(String[] args) { //下载一个文件 启动线程 ,线程池使用, //启动线程 下载文件 1.线程自己实现方法

ajax请求不能下载文件(转载)

最近在做文件下载,后台写了个控制层,直接走进去应该就可以下载文件,各种文件图片,excel等 但是起初老是下载失败,并且弹出下面的乱码: 前台请求代码: [html] view plain copy $('#fileexcel').unbind('click').bind('click',function(){ alert("我要下载了"); $.ajax({ type:'post', url:'media', data:null, async:true, success : func

Asp.net mvc 下载文件

前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 ASP.NET MVC 下载 在mvc中,control的returnresult有FileResult,描述如下: System.Web.Mvc.FileResult System.Web.Mvc.FileContentResult System.Web.Mvc.FilePathResult Sys

利用wget下载文件,并保存到指定目录

利用WGET下载文件,并保存到指定目录 [email protected] ~/下载 $ wget -P /home/cbx/下载/PDF https://www.linuxmint.com/documentation/user-guide/Cinnamon/chinese_16.0.pdf https://www.linuxmint.com/documentation.php wget是Linux上一个非常不错的下载指令,而其指令的内容虽然说是非常简单,但内藏许多的参数,也算是Linux工作者

FTP下载文件工具类

FTP文件下载需要的jar包commons-net-2.0.jar有时还需要:jakarta-oro.jar 1 package com.wdxc.util; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.OutputStream; 7 import java.util.HashMap; 8 import java.util.Ma

jsp下载文件的实现方法及注意事项 (转)

jsp中实现文件下载,最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>. 但是,这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素. 因此,可以采用其它方式实现下载,常使用的有以下两种:       1.RequestDispatcher的方式进行:       2.采用文件流输出的方式下载(推荐). 1.采用RequestDispatcher的方式: 1 <% 2 respons

PHP下载文件

客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下.服务器接受到该请求以后,马上运行该down.php文件运行该文件的时候,必然要把将要被下载的文件读入内存当中(这里是圣诞狂欢.jpg这张图片),这里通过fopen()函数完成该动作注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中 现在文件已经在内存当中了,这是需要从内存当中读取文件,通过fread()函数完成该动作注意:  如果文件较大,文件应该