public class ResponseUtils {
public static void writeDownloadResponse(HttpServletResponse resp, String filename, InputStream inputStream,
Optional
writeDownloadResponse(resp, filename, (String) null, inputStream, contentLength);
}
public static void writeDownloadResponse(HttpServletResponse resp, String filename, String contentType,
InputStream inputStream, Optional
writeDownloadResponse(resp, filename, true, contentType, inputStream, contentLength);
}
public static void writeDownloadResponse(HttpServletResponse resp, String filename, boolean download,
String contentType, InputStream inputStream, Optional
if (inputStream == null) {
resp.setStatus(404);
try {
resp.getWriter().write("file not found");
} catch (IOException arg18) {
;
}
} else {
String dispositionType = download ? "attachment" : "inline";
resp.setHeader("Content-Disposition", dispositionType + "; filename=\""
+ new String(filename.getBytes(Charsets.UTF_8), Charsets.ISO_8859_1) + "\"");
if (contentLength.isPresent()) {
resp.setContentLength(((Integer) contentLength.get()).intValue());
}
resp.setContentType(contentType == null ? "application/octet-stream" : contentType);
try {
ServletOutputStream e = resp.getOutputStream();
Throwable arg7 = null;
try {
IOUtils.copy(inputStream, e);
} catch (Throwable arg19) {
arg7 = arg19;
throw arg19;
} finally {
if (e != null) {
if (arg7 != null) {
try {
e.close();
} catch (Throwable arg17) {
arg7.addSuppressed(arg17);
}
} else {
e.close();
}
}
}
} catch (IOException arg21) {
throw new RuntimeException(arg21);
}
}
}
}
使用:
ResponseUtils.writeDownloadResponse(response, "基金交易申请表.pdf", flag, "application/pdf", new FileInputStream(file),
Optional.of((int) (file.length())));