java - byte[]转为图片下载

标签 java image spring download arrays

我有一个图像文件,我正在将其转换为 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/

相关文章:

java - 在Java中是否有任何直接的方法来获取和发送“当前方法名称”作为参数?

java - Tomcat 未启动(抛出 java.net.BindException : )

java - 如何在 Web 服务中使用 Moxy XPath 带注释的 bean?

java - 如何向 HttpSecurity 添加自定义过滤器并检索用户? ( Spring 安全)

java - 队列只有最后一条消息

java - HTTP 406 的 Spring 返回 JSON(NOT_ACCEPTABLE)

c# - 在 System.Windows.Controls.Image 控件中显示 System.Drawing.Bitmap 对象

javascript - 图像未显示在 github 页面上

css - 神秘的底边

java - @Repository @Component 注释的 NoSuchBeanDefinitionException