vue+springboot上传和下载附件功能

上传附件(服务端代码)

第一步:在application.yml中配置附件要上传的路径(此路径也是下载的路径)

***:windows路径和linux的路径是不同的,定义路径时要仔细(存放路劲自己定义即可)vue+springboot上传和下载附件功能_第1张图片

     

第二步:在服务端要调用接口所在的类(一般为控制层controller)定义一个变量

第三步:上传附件的代码:

vue+springboot上传和下载附件功能_第2张图片

 

本人遇见的坑:部署时vue+springboot分离部署

linux中的文件上传路径是java容器内部的路径,要进入容器内部才能看到,

进入java容器内部命令时

docker exec -it 容器名 bash

下载附件

vue+springboot上传和下载附件功能_第3张图片

ExcelReaderUtil工具类:

public static void download(String path, HttpServletResponse response) {
        try {            
            if(StringUtils.isNotBlank(path)){
                File file = new File(path);
                // 取得文件名。
                String fileName = file.getName();
                // 以流的形式下载文件。
                InputStream fis = new BufferedInputStream(new FileInputStream(path));
                byte[] buffer = new byte[fis.available()];
                fis.read(buffer);
                fis.close();
                // 清空response
                response.reset();
                String uncod=URLDecoder.decode(fileName,"UTF-8");
                    fileName = new String(uncod.getBytes("UTF-8"), "iso-8859-1");
                response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(fileName)));
                // 设置response的Header
                response.addHeader("Content-Length", "" + file.length());
                OutputStream toClient = new BufferedOutputStream(
                        response.getOutputStream());
                toClient.write(buffer);
                toClient.flush();
                toClient.close();
            }
            // path是指欲下载的文件的路径。
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    } 

你可能感兴趣的:(vue+springboot上传和下载附件功能)