在我当前的春天,一些表单有一个字段,用户可以在其中上传文件,该文件应保存在项目文件夹resources
内(src / main / resources,遵循maven创建的结构)。
负责将文件保存在此文件夹中的方法工作正常,直到此行:
URL path = this.getClass().getClassLoader().getResource(file);
变量path
保留值null
。变量file
使用此值定义:
String file = "/"+this.getName()+"/"+String.valueOf(id)+"/picture.jpg";
任何人都可以告诉我正确的方法吗?
PS:此方法的完整代码是:
public boolean upload_picture(E e, MultipartFile f) {
Integer id = null;
if(f == null) {
return false;
}
Class<?> clazz = e.getClass();
Method methods[] = clazz.getDeclaredMethods();
for(int i=0; i<methods.length; i++) {
if(methods[i].getName().equals("getId")) {
try {
id = (Integer) methods[i].invoke(e);
} catch (IllegalAccessException e1) {
e1.printStackTrace();
return false;
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
return false;
} catch (InvocationTargetException e1) {
e1.printStackTrace();
return false;
}
}
}
BufferedImage src;
try {
src = ImageIO.read(new ByteArrayInputStream(f.getBytes()));
} catch (IOException e3) {
e3.printStackTrace();
return false;
}
String file = "/"+this.getName()+"/"+String.valueOf(id)+"/picture.jpg";
URL path = this.getClass().getClassLoader().getResource(file);
File destination;
try {
destination = new File(path.toURI());
} catch (URISyntaxException e2) {
destination = new File(path.getPath());
e2.printStackTrace();
}
try {
ImageIO.write(src, "jpeg", destination);
return true;
} catch (IOException e1) {
e1.printStackTrace();
return false;
}
}