部署war时文件上载初始化问题

时间:2017-09-21 05:57:09

标签: file tomcat war

我想在war之外创建和管理上传文件夹路径。 它尝试使用相对路径而不是绝对路径访问上载路径。 有办法吗?

enter image description here

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);

我可以获取我的父文件夹????

0 个答案:

没有答案