【发布时间】:2017-08-27 17:31:38
【问题描述】:
我正在使用 Java、Spring 和 Hibernate 构建 Web 应用程序。 我想编写文件上传代码,以便用户可以上传照片,但我无法解决相对路径的问题。 这里可以看到spring控制器的代码:
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ModelAndView subidaFicheroUnico(@RequestParam("fichero") MultipartFile fichero, @ModelAttribute("maquinaSeleccionada")Maquina oMaquinaSeleccionada) throws IOException {
File imagenUpload = new ClassPathResource("imagenes/maquinas/fullsize").getFile();
String CARPETA_IMAGENES = imagenUpload.toString();
ModelAndView mv = new ModelAndView("subidaFicheros");
if (fichero.isEmpty()) {
mv.addObject("mensaje", "Seleccione una imagen");
}
try {
/** Guardar el archivo en disco */
byte[] bytes = fichero.getBytes();
Path path = Paths.get(CARPETA_IMAGENES +"/"+ fichero.getOriginalFilename());
Path path2 = Paths.get(imagenUpload.toURI());
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath();
Files.write(path, bytes);
/** Guardar el archivo en BD */
Imagen oNuevaImagen = new Imagen ( oMaquinaSeleccionada.getIdMaquina(),
fichero.getName());
servicioImagen.insertaImagen(oNuevaImagen);
mv.addObject("mensaje", "Ha subido correctamente la imagen '" + fichero.getOriginalFilename() + "'");
logger.info("Fichero subido:"+path.toString());
logger.info("Fichero subido:"+path.toFile().toURL().getPath());
logger.info("Fichero subido:"+path.toUri().getPath());
logger.info("Fichero subido:"+path.toString());
logger.info("Fichero subido:"+path.toString());
} catch (IOException e) {
e.printStackTrace();
}
return mv;
}
我找到了一种使用 ClassPathResource 处理相对路径的方法:
File imagenUpload = new ClassPathResource("imagenes/maquinas/fullsize").getFile();
在这里,您可以看到带有图像目录路径的文件的工作示例。 问题是您不能使用不存在的文件路径创建 ClassPathResource。我只能用目录创建一个,当我添加文件名时,文件不会上传到目录中。
谁能帮帮我?
谢谢。
【问题讨论】:
-
有什么问题?你想上传文件相对于什么?
-
问题是我想将新文件保存在我的项目内的一个目录中(resources/imagenes/maquinas/fullsize),我不知道为什么,但它没有上传文件。我认为是相对路径的问题。
-
运行时没有项目,你不要运行源代码。提示:问题不是相对路径,而是更基本的。
-
我该如何解决这个问题?我的意思是如何在我的项目内的资源文件夹中上传文件?
标签: java spring hibernate maven path