将文件上载到Web服务器java FileUpload

时间:2011-08-01 20:29:04

标签: java servlets file-upload

我正在使用apache的FileUpload将一些文件上传到我的网络服务器。问题是我不想将它们上传到机器上的特定位置,即c:\tmp,而是上传到相对路径,例如/ProjectName/tmp/

这是我的代码:

private static final long serialVersionUID = 1L;
private String TMP_DIR_PATH = "c:\\tmp";
private File tmpDir;
private static final String DESTINATION_DIR_PATH ="/files";
private File destinationDir;

public void init(ServletConfig config) throws ServletException {
    super.init(config);
    tmpDir = new File(TMP_DIR_PATH);
    if(!tmpDir.isDirectory()) {
        throw new ServletException(TMP_DIR_PATH + " is not a directory");
    }
    String realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
    destinationDir = new File(realPath);
    if(!destinationDir.isDirectory()) {
        throw new ServletException(DESTINATION_DIR_PATH+" is not a directory");
    }
}

我想更改TMP_DIR_PATH所以它与我的项目有关,请帮助我们!

2 个答案:

答案 0 :(得分:3)

如果您的实际问题是导致代码无法移植的c:\\tmp部分的硬编码,请考虑使用File#createTempFile()。这将在java.io.tmpdir系统属性指定的平台默认临时位置创建文件。

File file = File.createTempFile("upload", ".tmp");
OutputStream output = new FileOutputStream(file);
// ...

答案 1 :(得分:1)

如果您希望临时目录与项目相关,则必须使用getRealPath,然后确保创建目录(如果该目录尚不存在)。

您还可以使用File dir = (File) getServletContext().getAttribute("javax.servlet.context.tempdir");来获取容器提供的特定于应用的临时目录。