我需要在我的JSF web应用程序中上传图像文件并生成缩略图。原始图像存储在服务器上的
我已成功上传文件,并得到了BalusC的帮助。但是,使用
我使用了上传文件的绝对路径,如下所示:
缩略图生成器中的相关代码如下:
我仍然不理解为什么
/home/myname/tomcat/webapps/uploads
,而缩略图存储在/home/myname/tomcat/webapps/uploads/thumbs
中。我使用了从philreeve.com复制的缩略图生成器类。我已成功上传文件,并得到了BalusC的帮助。但是,使用
Toolkit.getImage()
时,我无法访问该图像。我使用了上传文件的绝对路径,如下所示:
inFilename = file.getAbsolutePath();
缩略图生成器中的相关代码如下:
public static String createThumbnail(String inFilename, String outFilename, int largestDimension) {
...
Image inImage = Toolkit.getDefaultToolkit().getImage(inFilename);
if (inImage.getWidth(null) == -1 || inImage.getHeight(null) == -1) {
return "Error loading file: \"" + new File(inFilename).getAbsolutePath() + "\"";
}
...
}
由于我已经使用了绝对路径,我不明白为什么它不能工作。我还尝试了以下inFilename
的值,但始终收到“加载文件出错”的消息。
/home/myname/tomcat/webapps/uploads/filename.ext
/uploads/filename.ext
但是我确实检查过目录,图片确实在那里。(我使用/home/myname/tomcat/webapps/uploads/filename.ext
上传,它可以工作。)该目录中图像的正确路径是什么?谢谢。
更新
我通过使用以下代码使其工作:
Image inImage = ImageIO.read(new File(inFilename));
我仍然不理解为什么
Toolkit.getImage()
不起作用。
.jpg
只是一个例子,对于误解我很抱歉。我实际上是在获取文件的后缀名。我尝试在浏览器中查看图像:http://***:8082/uploads/filename.jpg
,它可以正确显示。我已经修改了代码,感谢您的帮助。我将继续解决这个问题,但我有一种感觉getAbsolutePath()
会派上用场。 :) - JillImageIO.read()
而不是Tookit.getImage()
,它起作用了。感谢您提供绝对路径建议,老实说,凭借我生疏的Java技能,我自己想不到这一点。硬编码位置会很丑陋。感谢您的时间。 :) - JillImageIO.read()
和Toolkit.getImage()
中使用完全相同的文件,因此我的(猜测)是,Toolkit.getImage()
只适用于 applet 类型? :/ - Jill