【问题标题】:Redeploy the project upload image folder are deleted重新部署项目上传图片文件夹被删除
【发布时间】:2023-03-28 16:24:02
【问题描述】:

我能够成功上传文件,但文件被存储到服务器上的部署目录中。

我删除项目并将项目重新部署到我的 Tomcat 服务器 7.0 后,我上传的所有文件都会从中删除。

我在 Tomcat 服务器 7.0 中使用 JSF 作为我的服务器端技术。在eclipse Ide中

【问题讨论】:

  • 因为您的应用程序和文件位于同一目录中,所以很明显会发生。
  • 不要将上传的文件保存在你的部署目录中!

标签: java jsf-2


【解决方案1】:

将文件保存到 /WEB-INF 文件夹或硬盘的任何位置(当然部署目录除外)

我使用了这段代码(它将每个用户的文件存储到自己的文件夹中)

String path = Util.getPathToFiles() + "WEB-INF" + File.separator + "upload";
    try {
        path += File.separator + session.getCurrentUser().getLogin();
        if (!isFolderExists(path)) {
            new File(path).mkdir();
        }
        path += File.separator + file.getName();
        FileUtils.copyFile(file, new File(path));
    } catch (IOException ex) {
        Logger.getLogger(ThesisBean.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        file.delete();
    }

getPathToFilessimply 从 ServletContext 返回 realPath,而 FileUtils 是 Apache IO 的类(但您可以自己编写文件复制代码,它只是帮助类)

【讨论】:

  • 这是我的逻辑。String tmpFile = scontext.getRealPath(("/ngoPhotos/") + event.getFile().getFileName());文件结果 = 新文件(tmpFile);文件输出流 fos;尝试 { fos = new FileOutputStream(tmpFile); fos.write(imageByte); fos.close(); } 捕捉(异常 e){ e.printStackTrace(); }.如何存储到 web-inf 或其他文件夹中。你能帮我吗
【解决方案2】:

您应该将上传的文件存储在 deploy 文件夹中,绝对也不应该像其他人建议的那样存储在 WEB-INF 文件夹中。当您重新部署 web 应用程序时,它们会丢失,这仅仅是因为它们未包含在原始 WAR 文件中。

您需要将上传的文件存储在部署文件夹之外的固定路径上。例如/var/webapp/uploads。您始终可以通过向 Tomcat 添加新的 <Context> 来使该文件夹对网络可用。

另见:

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2015-02-08
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多