我需要在JSF Web应用程序中上传图像文件并为上传的文件生成缩略图.原始图像存储在服务器上的/ 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()无法正常工作.
解决方法:
您确定这是JPEG文件吗?使用图像查看器来确保文件在上传过程中没有发生任何不良情况(或从头开始是图像).
另外,使用新的File(inFilename).exists()来确保路径正确.我还建议在错误消息中打印新的File(inFilename).getAbsolutePath(),因为相对路径可能会伤害您.
也就是说,其余代码看起来正确.