当前位置: 首页 > 工具软件 > inputfile > 使用案例 >

Can‘t read input file! 图片上传服务器后出现了读取报错

上官琦
2023-12-01

通常情况下,我们会将跟项目有关的配置文件和静态资源放在resources目录下,在需要时进行调用。

问题及解决方案:

在windows系统下,我们利用BufferedImage实现图片的读取有多种方法,例如:

第一种:
String path = this.getClass().getClassLoader().getResource("picture.jpg").getPath();
File file = new File(path);

 BufferedImage labelPic = null;
 try {
     labelPic = ImageIO.read(file);
 } catch (IOException e) {
     throw new RuntimeException(e);
 }
第二种:针对在resources目录下的文件
ClassPathResource resource = new ClassPathResource("picture.jpg");
File file = null;
try {
	file = resource.getFile();
} catch (IOException e) {
	throw new RuntimeException(e);
}

BufferedImage labelPic = null;
 try {
     labelPic = ImageIO.read(file);
 } catch (IOException e) {
     throw new RuntimeException(e);
 }
第三种:针对在resources目录下的文件(以流的形式)
ClassPathResource resource = new ClassPathResource("picture.jpg");
InputStream is = null;
try {
	is = resource.getInputStream();
} catch (IOException e) {
	throw new RuntimeException(e);
}

BufferedImage labelPic = null;
 try {
     labelPic = ImageIO.read(is);
 } catch (IOException e) {
     throw new RuntimeException(e);
 }

但是,在上传到服务器后,即在linux系统下代码在读取文件路径从而获取图片时,使用前两种方法都会出现报错:Can‘t read input file! 即无法成功读取文件。经测试此时 使用第三种方法,即使用InputStream 才可在项目上传到服务器后对资源实现读取操作。

 类似资料: