我想在war之外创建和管理上传文件夹路径。 它尝试使用相对路径而不是绝对路径访问上载路径。 有办法吗?
String FilePath = application.getRealPath(“File / upload”);
//월마다 디렉토리를 생성하기 시간값
String MonthFolder = new SimpleDateFormat("yyyyMM").format(new Date());
//월별 저정될 디렉토리 경로
String saveFolder = FilePath + "/" + MonthFolder + "/";
//디렉토리가 없을 경우 생성
File targetDir = new File(saveFolder);
if (!targetDir.exists()) {
targetDir.mkdirs();
}
/*
String savefile = "upload"; //경로 파일명
String realFolder = "";
ServletContext scontext = getServletContext();
realFolder = scontext.getRealPath(savefile);
*/
int maxSize = 1024 * 1024 * 5; //파일 최대크기(15MB)
String encType = "UTF-8"; //인코딩방식
String fname = "";
String sysFile = "";
String orgFile = "";
String contextType = "";
//파일이름에 들어갈 난수(1~1000)
int randomNum = (int) (Math.round(Math.random() * 1000) + 1);
try {
//파일업로드 (request객체 , 저장될 서버 경로 , 파일최대크기 , 인코딩 방식 , 같인 이름의 파일명 방지처리)
MultipartRequest multi = new MultipartRequest(request, saveFolder, maxSize, encType,
new DefaultFileRenamePolicy());
//폼에서 넘긴 파일값 가져오기(파일여려개일 경우)
Enumeration files = multi.getFileNames();
while (files.hasMoreElements()) {
fname = (String) files.nextElement(); //has 형태로 랜덤한 이름
sysFile = multi.getFilesystemName(fname);
orgFile = multi.getOriginalFileName(fname);
contextType = multi.getContentType(fname);
}
//파일명 지정
String now = new SimpleDateFormat("yyyyMMddHmsS").format(new Date()); //현재시간
int m = orgFile.lastIndexOf("."); // 파일 확장자 위치
int s = orgFile.lastIndexOf("\\");
String FileName = orgFile.substring(s + 1, m); //파일 이름
String realFileName = now + "_" + randomNum + orgFile.substring(m, orgFile.length()); //현재시간+난수+파일이름
//파일 이름 바꾸기
File oldFile = new File(saveFolder + orgFile); //원래이름
File newFile = new File(saveFolder + realFileName); //변경될 이름
oldFile.renameTo(newFile); // 파일명 변경
String CURRENT_URL = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath();
String imgPath = CURRENT_URL + "/File/upload/" + MonthFolder + "/" + realFileName;
//out.println(saveFolder);
out.println(imgPath);
我可以获取我的父文件夹????