Java实现minio文件流下载文件,浏览器不下载
  0ZwfR6X6Muxs 2023年11月26日 15 0


在我写完minio下载功能时,浏览器怎么也不执行下载,纯纯没反应,只返回了流给前端.就在百思不得其解时,突然去翻看之前前端写的下载代码请求,此时发现之前用的是Windows.open(url),现在不起作用的写的是ajax请求.找到了问题所在,直接列出代码!

  • minio下载代码
@ApiOperation("文件下载")
    @Log(title = "文件下载", businessType = BusinessType.EXPORT)
    @GetMapping
    public void downloadFiles(@RequestParam("fileUrl") String fileUrl,
                              @RequestParam("fileName") String fileName,
                              HttpServletResponse response) {
        try {
            fileUrl = fileUrl.replace("/" + minioConfig.getBucketName() + "/", "");
            //setContentType 设置发送到客户机的响应的内容类型
            response.setContentType("application-download");
            //设置响应头
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + URLEncoder.encode(fileName,
                            "UTF-8"));
            //文件流
            InputStream stream = minioClient.getObject(
                    GetObjectArgs.builder()
                            .bucket(minioConfig.getBucketName())
                            .object(fileUrl)
                            .build());
            BufferedInputStream buffInputStream = new BufferedInputStream(stream, 1024 * 10);
            //设置文件大小
            byte buf[] = new byte[1024*10];
            int length = 0;
            OutputStream outputStream = response.getOutputStream();
            while ((length = buffInputStream.read(buf,0,1024*10)) != -1) {
                outputStream.write(buf, 0, length);
            }
            response.setContentLength(length);
            response.flushBuffer();
            //关闭流
            buffInputStream.close();
            stream.close();
            outputStream.close();
            log.info("文件导出:"+fileUrl);
        } catch (Exception ex) {
            log.info("导出失败:"+ex.getMessage());
            ex.printStackTrace();
        }
    }
  • 前端代码
windows.open("http://127.0.0.1:9000/file?fileName=test.doc&fileUrl=/2022/2/1/test.doc");

希望能帮到你


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
0ZwfR6X6Muxs