我有一个图像文件,我正在将其转换为 byte[]
并将其保存在数据库中,同时用户单击来自 UI 的文件链接,该文件必须下载才能下载我写了一种方法
public void downloadDeclarationForm(HttpServletRequest request,
HttpServletResponse response) throws IOException {
int payrollId = RequestUtils.getBrowsePayroll(request);
Payroll payroll = itConfigManager.getObjectOrNull(Payroll.class, payrollId);
int year = payrollManager.getYear(payroll.getFromDate());
int id = NumberUtils.toInt(request.getParameter("id"));
try {
byte[] byteBuf = itConfigManager.getDeclarationFormBytes(id, year);
ControllerUtils.writeFileUploadHeaders(response,
itConfigManager.getFileName(id, year), byteBuf.length);
//response.setContentType("image/jpeg");
OutputStream stream = new ByteArrayOutputStream();
response.getOutputStream().write(byteBuf);
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (Exception e) {
e.printStackTrace();
response.getOutputStream().print(
"Error while fetching attachment..");
} finally {
response.getOutputStream().close();
}
}
当我点击下载链接时它打开下载窗口,即使在该窗口中文件名正确且扩展名正确但是如果我将该文件保存到磁盘并尝试打开它不打开可以打开文件有人帮帮我吗?
最佳答案
setContentType 应该取消注释并且参数应该正确。例如类型是 'gif' 它应该是 response.setContentType("image/gif");
。您需要确保在那里设置了正确的图像类型。
如果您不确定要获取的文件类型,可以使用 ImageIO 类。这是关于 ImageIO 的讨论。 How to use ImageIO to get image type and image byte array
关于java - byte[]转为图片下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8676197/