使用Apache Tomcat存储上载的静态文件的位置

时间:2016-05-24 19:52:13

标签: java maven jsp tomcat

我存储用户上传的文件如下:

 InputStream inputStream = null;
 OutputStream outputStream = null;

 MultipartFile file = uploadedFile.getFile();

 String fileName = file.getOriginalFilename();
 String path ="C:/apache-tomcat-8.0.18/uploads/images/";

 try {
   inputStream = file.getInputStream();
   File newFile = new File(path +fileName);
   if (!newFile.exists()) {
     System.out.println(newFile.getAbsolutePath());
     newFile.createNewFile();
   }
   outputStream = new FileOutputStream(newFile);
   int read = 0;
   byte[] bytes = new byte[1024];

   while ((read = inputStream.read(bytes)) != -1) {
     outputStream.write(bytes, 0, read);
   }
 } catch (IOException e) {
   e.printStackTrace();
 }
 finally {
   outputStream.close();
 }

应该保存上传文件的路径是什么?我想存储图像并将它们显示在JSP页面中。

我最初将文件存储在Maven项目的 webapp / images 文件夹中。但是,当重新部署应用程序时,上传的文件也会被删除。我该如何解决这个问题?

当我上传 C:/apache-tomcat-8.0.18/uploads/images / 时,我无法在JSP页面中显示图像。获取错误不允许加载本地资源

1 个答案:

答案 0 :(得分:0)

在磁盘上存储文件的最佳方法是使用Content Repository API for Java(JCR)。我建议Jackrabbit。

看一下这个答案Recommended way to save uploaded files in a servlet application