File Up & Down

programing/JAVA 2009.06.02 18:18

library  
-commons-io-1.4.jar
-commons-fileupload-1.2.1.jar
등록

//FileUploadAction.java
public class FileUploadAction extends ActionSupport {
    //ActionSupport를 상속받는이유는
    //프로퍼티즈 파일을 사용하거나 유효성검사를 자동으로 하기위해

    private File upload;    //유저가 선택한 파일을 fileUpload 인터셉터가 채워줌
    private String uploadFileName,  uploadContentType,  fullPath;
   @Override
    public String execute() throws Exception {
       
        //파일을 저장하기 위해 유틸 객체 생성
        FileUtil fileUtil = new FileUtil();
        //properties 파일에 작성된 property를 읽어오는 메서드
        String path = getText("struts.path");
        //파일을 해당 경로로 저장하기 위한 메서드 호출
        fullPath = fileUtil.saveFile(upload, uploadFileName, path);
        return "success";
    }
//그외 setter, getter
}

//FileUploadAction-validation.xml    유효성 검사
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC '-//OpenSymphony Group//XWork validator 1.0.2//EN' 'http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd'>
<validators>
    <field name="upload">
        <field-validator type="fieldexpression">
            <param name="expression">
                <![CDATA[upload.length() > 0 ]]>
            </param>
            <message>업로드할 파일을 선택하세요.</message>
        </field-validator>
    </field>

</validators>

//FileListAction.java
public class FileListAction implements Action {

    private ArrayList<File> list;

    public ArrayList<File> getList() {
        return list;
    }

    public void setList(ArrayList<File> list) {
        this.list = list;
    }

    public String execute() throws Exception {
        list = new ArrayList<File>();
        //우리가 저장한 디렉토리를 File 객체로 생성
        File tmpDir = new File("c:/test");
        //디렉토리가 null이 아니면
        if (tmpDir != null) {
            //해당 디렉토리에서 그 안의 파일, 디렉토리를 모두 File[]로 가지고 옴
            File[] files = tmpDir.listFiles();
            //files배열만큼 for문 실행
            for (File f : files) {
                //만약 f가 파일이고 숨겨져 있지 않다면
                if (f.isFile() && !f.isHidden()) {
                    list.add(f);
                }
            }
        }
        return SUCCESS;
    }
}

//FileDownloadAction.java
public class FileDownloadAction {

    private String contentDisposition,  fileName;  //헤더에 파일이름 작성
    private long contentLength; //파일의 길이 작성
    private InputStream inputStream;    //스트러츠2가 읽어들일 inputStream 지정

    public String execute() throws Exception {
        //경로 + / + 파일이름으로 파일 객체 생성
        File file = new File("c:/test" + File.separator + fileName);
        contentLength = file.length();//파일의 길이
        //헤더에 파일이름을 한글처리하여 작성
        contentDisposition = "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8");
        //inputStream 연결
        inputStream = new FileInputStream(file);
        return "success";
    }



//struts.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC '-//Apache Software Foundation//DTD Struts Configuration 2.0//EN' 'http://struts.apache.org/dtds/struts-2.0.dtd'>
<struts>
    <package name="default" extends="struts-default" namespace="">
        <action name="uploadForm">
            <result>/uploadForm.jsp</result>
        </action>
        <action name="upload" class="action.FileUploadAction">
            <result>/uploadResult.jsp</result>
            <result name="input">/uploadForm.jsp</result>
        </action>
        <action name="fileList" class="action.FileListAction">
            <result>/fileList.jsp</result>
        </action>
        <action name="download" class="action.FileDownloadAction">
            <result type="stream">
                <param name="contentType">binary/octet-stream</param>
                <param name="contentDisposition">${contentDisposition}</param>
                <param name="inputStream">inputStream</param>
                <param name="contentLength">${contentLength}</param>
                <param name="bufferSize">4096</param>
            </result>
        </action>
    </package>
</struts>

신고

'programing > JAVA' 카테고리의 다른 글

HTML 태그제거 소스  (0) 2009.06.22
계층형 게시판  (0) 2009.06.03
File Up & Down  (0) 2009.06.02
Paging  (0) 2009.06.02
FileUtil  (0) 2009.06.02
JSP ibatis+Struts2  (0) 2009.06.02
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바