java用流的方式把图片写入response

private static Map imageContentType = new HashMap <>();
static {
imageContentType . put ( "jpg" , "image/jpeg" );
imageContentType . put ( "jpeg" , "image/jpeg" );
imageContentType . put ( "png" , "image/png" );
imageContentType . put ( "tif" , "image/tiff" );
imageContentType . put ( "tiff" , "image/tiff" );
imageContentType . put ( "ico" , "image/x-icon" );
imageContentType . put ( "bmp" , "image/bmp" );
imageContentType . put ( "gif" , "image/gif" );
}
httpServletResponse.setDateHeader("Expires", 0L);
httpServletResponse.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
httpServletResponse.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setContentType("image/jpeg");
ServletOutputStream out = null;

/*****method一:由于ImageIO.read不支持较大尺寸有时候会有错误*************/
BufferedImage image = ImageIO.read(new File(filePath));
out = httpServletResponse.getOutputStream();
ImageIO.write(image, "jpg", out);
out.flush();
/*****method二:直接用文件流来处理有更好的通用性*******************************************************/
File image = new File(filePath);
FileInputStream inputStream = new FileInputStream(image);
int length = inputStream.available();
byte data[] = new byte[length];
httpServletResponse.setContentLength(length);
String fileName = image.getName();
String fileType = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
httpServletResponse.setContentType(FormatUtils.imageContentType.get(fileType));
inputStream.read(data);
OutputStream toClient = httpServletResponse.getOutputStream();
toClient.write(data);
toClient.flush();

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用Java的IO流来读取本地图片文件,并将其写入HTTP响应中。下面是一个简单的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ImageServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取图片文件路径 String imagePath = "path/to/your/image.jpg"; // 设置响应内容类型为图片 response.setContentType("image/jpeg"); // 读取图片文件 File imageFile = new File(imagePath); FileInputStream fis = new FileInputStream(imageFile); // 获取输出流 OutputStream out = response.getOutputStream(); // 写入响应 byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } // 关闭流 fis.close(); out.close(); } } ``` 在上面的示例中,首先需要指定要读取的图片文件的路径。然后,通过设置`response.setContentType("image/jpeg")`将响应内容类型设置为图片。接下来,使用`FileInputStream`读取图片文件,并通过`response.getOutputStream()`获取输出流。最后,使用循环将读取的内容写入输出流,并关闭输入和输出流。 请注意,上述示例是基于Java Servlet的,适用于Web应用程序。如果你在其他环境中使用Java,可能需要根据具体情况进行适当的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值