<%@ page contentType="application;" %>

<%@ page import="java.util.*,java.io.*,java.sql.*,java.text.*"%>

    <%

        String strFilename=java.net.URLDecoder.decode(request.getParameter("filePath")); // filePath : 파일의 풀경로명

        String strFilenameOutput=new String(strFilename.getBytes("UTF-8"),"8859_1");

        

        File file=new File(strFilename);

        byte b[]=new byte[(int)file.length()];

        

        response.setHeader("Content-Disposition","attachment;filename="+strFilenameOutput);

        response.setHeader("Content-Length",String.valueOf(file.length()));

        

        if(file.isFile()){

            BufferedInputStream fin=new BufferedInputStream(new FileInputStream(file));

            BufferedOutputStream outs=new BufferedOutputStream(response.getOutputStream());

            

            int read=0;

                

            while((read=fin.read(b))!=-1){outs.write(b,0,read);}

                    outs.close();

                    fin.close();

        }

    %> 

- 필요한 Jar 파일

commons-fileupload-1.2.2.jar

commons-io-2.4.jar



- 파일업로드 클래스(MultiPart.java)


package com.util;


import java.io.File;

import java.io.UnsupportedEncodingException;

import java.util.List;


import javax.servlet.http.HttpServletRequest;


import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileItemFactory;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;



public class MultiPart {

    List items; // 입력 데이타 항목들로 구성된


    /* 생성자 */

    public MultiPart(HttpServletRequest request) throws Exception {

        FileItemFactory factory = new DiskFileItemFactory();

        ServletFileUpload upload = new ServletFileUpload(factory);

        items = upload.parseRequest(request);

    }


    /* 주어진 이름에 해당하는 데이터 값을 리턴하는 메서드 */

    public String getParameter(String fieldName) throws UnsupportedEncodingException {

        for (int i = 0; i < items.size(); i++) {

            FileItem item = (FileItem) items.get(i);

            if (item.getFieldName().equals(fieldName))

                return item.getString("UTF-8");

        }

        return null;

    }


    /* 주어진 이름에 해당하는 업로드 파일의 경로명을 리턴하는 메서드 */

    public String getFilePath(String fieldName) {

        for (int i = 0; i < items.size(); i++) {

            FileItem item = (FileItem)items.get(i);

            if( item.getFieldName().equals(fieldName) )

                return item.getName();

        }

        return null;

    }


    /* 주어진 이름에 해당하는 업로드 파일의 이름을 리턴하는 메서드 */

    public String getFileName(String fieldName) {

        String path = getFilePath(fieldName);

        int index1 = path.lastIndexOf("/");

        int index2 = path.lastIndexOf("\\");

        int index = 0;

        if( index1 > index2 )

            index = index1;

        else

            index = index2;

        if( index < 0 )

            return path;

        else

            return path.substring(index + 1);

    }


    /* 주어진 이름으로 해당하는 업로드 파일을 저장하는 메서드 */

    public void saveFile(String fieldName, String path) throws Exception {

        for (int i = 0; i < items.size(); i++) {

            FileItem item = (FileItem)items.get(i);

                if( item.getFieldName().equals(fieldName) ) {

                    if( !item.isFormField() ) {

                        item.write(new File(path));

                        return;

                    }

                }

        }

    }

}// end - class



- 업로드 예제(FileUpLoad) - JSP 페이지라고 가정


        /* 파일업로드 기능 추가후 파미터 받기 */

        MultiPart multiPart = new MultiPart(request);

        String title = multiPart.getParameter("title");

        String writer = multiPart.getParameter("writer");

        String content = multiPart.getParameter("content");

        String fileName = multiPart.getFileName("file");


※ 입력 폼에서 파일업로드할시 method="post" enctype="multipart/form-data" 해주어야 함.

    이후에 Action.jsp 에서 String 받는거처럼 request.getParameter("ParameterName");

    로 받아서 찍어보면 전부 Null 값으로 나온다.

    위에 처럼 MultiPart 로 받아와야함.


             if( fileName !=null || fileName != "" ){

        /* 작성자 및 날짜로 파일명 중복 예방? */

        String filePath = firstDt + "_" + writer + "_" + fileName;

        newPath = application.getRealPath("/upload/" + filePath);

        /* 파일 업로드 저장 */

        multiPart.saveFile("file", newPath);

        }

        else{

            newPath = "Not File";

        }


※ 파일이름 받아와서 Null 유뮤 체크하그 업로드


'공부 > JAVA_UTILL_CLASS' 카테고리의 다른 글

JSP_[util.CookieBox]  (0) 2012.07.24

- 오류현상

   DB 가 불안정하여 shutdown 후 재기동 startup 을 하자 오류발생

ORA-16038: log 2 sequence# 51 cannot be archived

ORA-19809: limit exceeded for recovery files

ORA-00312: online log 2 thread 1:

'/home/oracle/app/oracle/oradata/[SID]/redo02.log'


복구파일 보존공간이 꽉 찼다는 오류 메시지라는데... 잘모르겟다


- 해결방안


[oracle@cent ~]sqlplus / as sysdba

SQL> recover database until cancel;

media recovery completed (대략 저런 메세지)


SQL> alter database open resetlogs;

database altered


SQL> shutdown;


SQL> startup;


'공부 > ORACLE_ERROR' 카테고리의 다른 글

ORACLE_[ ORA-12519 해결방법 ]  (0) 2014.11.06

+ Recent posts