下载文件转流一
public void downloadPdf(HttpServletResponse response) {try {String fileName = minioPdfConfig.getFileName();response.setContentType("application/pdf");response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 拼写文件下载信息String downloadApi = String.format(ChinaTowerApiConstants.FILE_DOWNLOAD,minioPdfConfig.getBucketName(), fileName);
// 下载文件并转成字节byte[] buffer = HttpUtil.downloadBytes(chinaTowerConfig.getMinioUrl() + downloadApi);// 清空responseresponse.reset();try {OutputStream toClient = new BufferedOutputStream(response.getOutputStream());toClient.write(buffer);toClient.flush();toClient.close();} catch (IOException e) {e.printStackTrace();}} catch (Exception e) {e.printStackTrace();throw new BaseException(e.getMessage());}
}
下载文件转流2
public void downloadPdf(HttpServletResponse httpServletResponse) throws IOException {RequestBody emptyRequestBody = RequestBody.create(null, new byte[0]);OkHttpClient okHttpClient = new OkHttpClient();String fileName = minioPdfConfig.getFileName();String downloadApi = String.format("/ChinatowerFile/download/%s/%s",minioPdfConfig.getBucketName(), fileName);// return chinaTowerConfig.getMinioUrl() + downloadApi;Request request = new Request.Builder().url(chinaTowerConfig.getMinioUrl()+downloadApi).post(emptyRequestBody).build();Response response = okHttpClient.newCall(request).execute();if(200 != response.code()){throw new BaseException("文件下载失败");}InputStream inputStream = response.body().byteStream();// 创建 ByteArrayOutputStream 用于收集所有读取的字节ServletOutputStream outputStream = httpServletResponse.getOutputStream();byte[] buffer = new byte[1024];int bytesRead;// 读取 InputStream 并写入 ByteArrayOutputStreamwhile ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}}
直接返回url下载
public String downloadPdf() {String fileName = minioPdfConfig.getFileName();String downloadApi = String.format("/ChinatowerFile/download/%s/%s",minioPdfConfig.getBucketName(), fileName);return chinaTowerConfig.getMinioUrl() + downloadApi;}