Servlets Servlet返回未设置动画的GIF图像
首先,在我的servlet中,我使用了来自某个博客的图像servlet jar,我的图像工作正常。但问题是,任何人都可以使用inspect元素并将url附加到Servlets Servlet返回未设置动画的GIF图像,servlets,gif,Servlets,Gif,首先,在我的servlet中,我使用了来自某个博客的图像servlet jar,我的图像工作正常。但问题是,任何人都可以使用inspect元素并将url附加到。/来访问其他目录,这也是一个很大的安全问题。所以我问了一个问题,人们建议我自己编写代码,因为这很容易,我可以完全控制 这是我的代码 String path1=getServletConfig().getServletContext().getRealPath(""); System.out.println(pa
。/
来访问其他目录,这也是一个很大的安全问题。所以我问了一个问题,人们建议我自己编写代码,因为这很容易,我可以完全控制
这是我的代码
String path1=getServletConfig().getServletContext().getRealPath("");
System.out.println(path1); // /usr/share/tomcat7/webapps/myProject
String l = File.separator;
f = new File(path1+l+"images"+l+"load.gif");
BufferedImage bi = ImageIO.read(f);
OutputStream out = response.getOutputStream();
ImageIO.write(bi, "gif", out);
out.close();
它工作得很好,但问题是图像不再具有动画效果。我试着下载并打开它,但它没有动画效果
所以我猜在将文件读入BuffereImage的过程中发生了一些变化
这些图像看起来像这些您可以在inspect元素或source中看到两者都是gif,但只有一个正在制作动画您只是发送图像的第一帧 ImageIO.read仅读取第一帧(而BuffereImage只能包含单个帧/图像) 您可以通过发送任何二进制内容所使用的相同技术来实现它
String path1=getServletConfig().getServletContext().getRealPath("");
System.out.println(path1); // /usr/share/tomcat7/webapps/myProject
String l = File.separator;
f = new File(path1+l+"images"+l+"load.gif");
OutputStream out = response.getOutputStream();
InputStream in = new FileInputStream(f);
try {
byte[] buffer = new byte[1024];
int count;
while ((count = in.read(buffer)) != -1) {
out.write(buffer, 0, count);
}
// Flush out stream, to write any remaining buffered data
out.flush();
}
finally {
in.close();
}
out.close();
归功于