下载文件转流一
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);
// 清空response
response.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 并写入 ByteArrayOutputStream
while ((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;
}