在tomcat上保存临时文件的最佳实践? [复制]

Posted

技术标签:

【中文标题】在tomcat上保存临时文件的最佳实践? [复制]【英文标题】:Best practice to save temp files on tomcat? [duplicate] 【发布时间】:2014-07-09 15:34:30 【问题描述】:

我需要演示一个基于 xml 的数据交换系统。它在学校的受信任计算机上离线演示。应用程序稍后会获取数据库,但为了这个演示,我只需要展示 xml 文件的布局、打开和保存以及表如何从 xml 中获取数据。

那么,让 Web 应用程序临时创建 xml 文件以便我展示这个应用程序的最佳位置是什么?我正在使用 Eclipse 和 Tomcat。

如上所述,安全性根本不是问题,因为此版本不会上线。此外,如果每次运行应用程序时都会删除文件,也可以。

它们只需要在应用程序运行一次的演示文稿期间存在。所以,我不知道什么是最佳位置以及如何获取到该位置的路径,而不取决于所使用的计算机。

谢谢。

【问题讨论】:

见***.com/questions/617414/… 如果文件被删除没问题,而且大概是演示,不会有很多文件,为什么不把它们保存在地图或类似的东西的内存中? 您可以使用属性java.io.tmpdir 获取tmp 位置并将您的文件保存在那里。 java.io.tmpdir 所指向的 tomcat/temp 怎么样 【参考方案1】:

使用属性java.io.tmpdir 获取tomcat 临时文件夹并将您的文件保存在那里。那将是暂时存放它们的好地方。因此您可以将其定义如下:

public static final String TMP_DIR = System.getProperty("java.io.tmpdir")

【讨论】:

【参考方案2】:

要么使用属性java.io.tmpdir,要么使用规范中定义的servlet上下文属性javax.servlet.context.tempdir。对于 tomcat,该属性可以通过 context 上的 workDir 属性进行更改。

您可以通过调用 servletContext.getAttribute("javax.servlet.context.tempdir") 来使用该属性

See tomcat documentation for detail.

【讨论】:

【参考方案3】:

老问题,但如果有创建临时文件为什么不使用File.createTempFile 函数?

例子:

File temp = File.createTempFile("real",".howto");
temp.deleteOnExit();

【讨论】:

【参考方案4】:

您可以使用此方法根据您的操作系统获取temp文件位置

public static String getSystemFileLocation()

    File tmpFile = null;
    String fileLocation="/tmp/";
    if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == 0) 
        tmpFile=new File("c:\\temp");
        if(tmpFile.exists()) 
            fileLocation="c:\\temp\\";
        
        else 
            tmpFile.mkdir();
            fileLocation="c:\\temp\\";
        
    
    else if (System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1) 
        fileLocation="/tmp/";   
    
    return fileLocation;

【讨论】:

消极而危险的方式... 这个问题是关于tomcat中的临时文件夹,但你的代码是在操作系统级别获取临时文件夹

以上是关于在tomcat上保存临时文件的最佳实践? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP 上传文件的最佳实践

django 在模型自定义保存中访问上传的文件,最佳实践?

用于创建临时 zip 工件的 Maven 最佳实践

配置 Apache / Tomcat 的最佳实践

使用 Tomcat 部署 grails 应用程序的最佳实践

在php中临时保存数据的最佳方法[关闭]