我正在使用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
所以它与我的项目有关,请帮助我们!
答案 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");
来获取容器提供的特定于应用的临时目录。