*1 

신규
놈놈놈
수퍼히어로
강철중 공공의적1.1
올림픽 야구

변경
하우스(시즌1, 2) 업로드 감사합니다.
동영상으로 헬스 -> 하위 "헬스" 폴더로 이동

그리고 공지...
현재 파일서버 용량은 500여 기가가 남았습니다.
로그 파일을 분석해보며 2~3개월간 다운로드 이력이 없는 파일은 과감히 삭제하고 있습니다.
또 CSI외 자막이 없는 파일들을 삭제하였습니다. 업로드 해주신 분 죄송합니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/30 23:43 2008/08/30 23:43
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/539
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/539
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/539
REPLY RSS http://www.soulfree.net/rss/comment/539
REPLY ATOM http://www.soulfree.net/atom/comment/539
이름 :
비밀번호 :
홈사이트 :
비밀글 :
8만을 넘으신 라제선생...
아버지께서 싸게 넘기신 이유가 다 있었으니
바로 8만이라는 숫자는 그저 만단위를 넘긴 의미가 아니라는 말씀.

가장 먼저 타이밍 벨트.
30만원이 넘는다는 정비가격이 현재 쿼드코어 + 4기가 램시대를 열고자 하는 나의 하이엔드 욕구에 강력한 제동을 걸고 있다.

두번째로 엔진 오일, 오일필터
엔진오일 1리터당 5천원 정도니까 6리터 3만원, 오일필터는 만원 정도..

세번째로 미션 및 브레이크 오일
모두 4만넘으면 바꾸는거니 지금 시기가 된거같음... 얼만지는 잘 모르겠음.
확인결과 안갈아도 될듯...

네번째로 가장 저렴한 에어필터
4천원 자가 교환 예정...


다섯번째 휠밸런스 및 전후 휠 교환
앞쪽과 뒷쪽 휠을 바꿔서 마모를 맞추고 휠벨런스 맞춰서 헨들떨림 없애야 하겠다. 이것도 3만원 정도??


그외 보조흡기 제거(요즘 그 효용에 약간의 의문을 가짐... 순정으로 좀 타면서 비교해봐야할 듯) 및 무상교환 항목(알터네이터, 오일분사기) 점검 그냥 몰고다니기로 함

40만원 정도 생각하고 개강전에 정비를 마치도록 해야겠다...

아 쉬바 돈 ㅠㅠ 이럴때 진짜 공부고 뭐고 모르겠고 돈벌고 싶다
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/23 23:34 2008/08/23 23:34
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/538
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/538
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/538
REPLY RSS http://www.soulfree.net/rss/comment/538
REPLY ATOM http://www.soulfree.net/atom/comment/538
이름 :
비밀번호 :
홈사이트 :
비밀글 :

WBC때도 잠시 느끼고 대호가 홈런치고 손민한이 QS할때 느끼는 거지만
지금 이거는 격이 다르다


야구팬인것이 너무 행복하다



올해 올림픽은 야구가 종목으로 들어가는 마지막 올림픽이라고 한다.
그런 올림픽에서 마지막 금메달을 획득했다는 것이 참으로 드라마와 같은 일이 아닌가 한다.
더구나 야구는 국내 최고의 인기 스포츠가 아닌가...

전승 우승이다. 조금의 실수도 없었으며 누구도 넘볼수 없는 그야말로 명실상부 최고의 팀이라는 말이다.
개인전이 없는 단체 구기종목(축구 농구 배구 등등...)으로는 이번 야구의 금메달이 첫 금메달이 아닐까한다.

그것을 이번 우리나라 대표팀은 맡형 박찬호와 같은 해외파(사실 지금은 그리 믿을만한 해외파는 없는 상황이다..)보다는 우리리그의 선수들이 주축이 되어 활약하여 얻어냈다는데 더 값진게 아닌가 한다.
물론 이승엽의 결정적인 준결승 투런과 결승전 투런이 있었으나 그런 장면을 우리가 보기 위해서는
류현진, 김광현의 배짱투, 이대호의 홈런 1위, 이용규의 타격감각과 빠른발이 필요했고, 정대현의 마무리가 있었어야했다.
이제 곧 재개될 국내리그를 즐길 대한민국 국민은 행복한 일이다.
세계최고 수준의 야구경기를 국경을 넘지 않아도 지켜볼 수 있고 환호할 수 있으니 말이다.

일본 호시노의 망언, 존갈의 재확인, 쿠바의 결승전 9회말 의심스런 볼판정은 소설의 큰 줄기를 바꾸지 못하는 한낫 즐거운 에피소드로 즐기게 되었으며, 그 저자는 김경문 감독이었다.
그의 뚝심야구는 매년 우리 리그가 시작될때마다 그의 팀을 평가절했던 나를 리그가 끝날때 비웃었었다.
이번에는 일본에게 어려운 경기를 하지 않을까 하는 나의 평가절하를
이승엽, 김태균대신 이대호라는 뚝심으로 다시 비웃었으니 이거 좋다가도 좋지 않다. ㅎㅎ

우승을 결정짓고 헹가래를 치는 우리대표팀

우승을 결정짓고 헹가래를 치는 우리대표팀. 뚝심의 김경문 승리의 김경문이다.<출처 노컷뉴스>




그러나 금메달을 따고 세계최고의 야구실력을 전세계에 떨쳤다는 것 뒤에 우리가 잊었던 일을 부각시켜야하지 않을까한다.

먼저 우리히어로즈 문제가 있다. 세계최고의 야구국가가 풀어야할 현실적인 숙제이다.
이번 2차 신인 지명에서도 보았듯, 학생야구에서 프로로 넘어가는 인력은 고작 전체의 8%에 불가하다고 한다.
그런 와중에 스폰서 철회를 요청한 (주)우리담배로 벌어진 센티니얼과 히어로즈 구단 문제를 효과적으로 풀지 못한다면 지금을 정점으로 낙하하는 곡선을 그릴지도 모르는 일이다.

그리고 유격수 문제. 아직도 30줄이 넘은 박진만 김민재에게 큰 짐을 지운다는 것은 미안한 일이다.
이제는 새로운 선수에게 세계최고의 팀의 세계최고의 수비수라는 영광의 자리를 마련해주어야 할 필요가 있다.
그러기 위해서는 히어로즈의 황재균, 우리팀의 박기혁, 이원석등이 분발해야할 필요가 있다. 울지않는 아기에게 젖은 없다.

KBO의 미숙한 행정들을 들수있다.
불펜포수 문제는 대표적인 사례다. 햄스트링 부상에 걸려버린 진갑용이 불팬에서 공을 받아야하는 일은 올림픽 시리즈 초반 수없이 지적받은 일이다. 그러나 허구연 해설위원의 말대로 그들의 상대 전력분석은 충분히 존중받아야할 업적이다.

TV에서 태극기를 배경으로 야구중계에서 관중들이 부르는 노래가 흘러나오는데
그게 부산갈매기가 아니고 애국가이다.
너무 감동적이라 소름이 돋는다.
대한민국 야구팬이라는 사실에 자부심을 느끼게 되었다.
그리고 내가 가장 좋아하는 취미생활을 전세계에서 가장 뛰어난 수준으로 편리하게 즐길 수 있다는 사실이 드니
지금 당장이라도 사직구장으로 달려가고 싶다.

다시한번 대표팀에게 찬사를 보낸다. 대한민국 파이팅!! 승리의 대한민국!!
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/23 22:55 2008/08/23 22:55
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/537
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/537
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/537
REPLY RSS http://www.soulfree.net/rss/comment/537
REPLY ATOM http://www.soulfree.net/atom/comment/537
이름 :
비밀번호 :
홈사이트 :
비밀글 :
http://freeutil.net/board/376

parent가 안먹길래 opener 사용... 병따개??
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/21 04:46 2008/08/21 04:46
tagged with  
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/536
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/536
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/536
REPLY RSS http://www.soulfree.net/rss/comment/536
REPLY ATOM http://www.soulfree.net/atom/comment/536
이름 :
비밀번호 :
홈사이트 :
비밀글 :
출처 : :: 뚱어 :: 나를 뛰어넘는 도전 / http://www.missjang.com/99

프레임을 쓰실때 생각할 것 세가지
1. frame_name.location = 'url.php';
또는 frame_name.location.href = 'url.php';
또는 frame_name.location.replace('url.php')
2. parent.frame_name.location = 'url.php';
3. opener.parent.frame_name.location = 'url.php';

새창을 열게해준 창의 주소를 바꾸고 새창을 끈다.
<script>
opener.location.href = 'url.php';
self.close();
</script>

새창을 열게해준 창의 주소를 새로고침하고 새창을 끈다
<script>
opener.location.reload();
self.close();
</script>

다른 프래임의 주소를 바꾸게 하려면
<script>
frame_name.location.href = 'url.php';
</script>

프래임 구조상 상위 프래임의 주소를 바꾸게 하려면
<script>
parent.location.href = 'url.php';
</script>

타겟이 지정된 프레임을 바꾼다.(타겟하나)
<script>
parent.target(타겟).location.href = 'url.php';
</script>

타겟이 지정된 프레임을 바꾼다.(타겟둘)
<script>
parent.target1(타겟1).location.href = 'url1.php';
parent.target2(타겟2).location.href = 'url2.php';
</script>

타겟이 지정된 프레임을 바꾼다.(타겟셋)
<script>
parent.target1(타겟1).location.href = 'url1.php';
parent.target2(타겟2).location.href = 'url2.php';
parent.target3(타겟3).location.href = 'url3.php';
</script>

타겟이 지정된 프레임두개를 클릭으로 바꾸려면
<script>
function target_frame(url1, url2)
{
parent.top_frame.location.href = url1;
parent.main_frame.location.href = url2;
}
</script>
<a href="target_frame('main_menu.html', '$go_url');"> 확인 </a>

로그인페이지 에선
<script>
parent.top_frame.location.href = '../main.html'; //main.html는 로그인페이지 보다 상위디렉토리에 있다.
parent.main_frame.location.href = '$go_url';
</script>

로그인페이지를 새창으로 띄웠다면
<script>
opener.parent.top_frame.location.href = '../main.html';
opener.parent.main_frame.location.href = '$go_url';
self.close();
</script>

-------------------------------------

<script>
top.frames['calendar'].location.reload();
</script>
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/17 17:38 2008/08/17 17:38
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/535
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/535
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/535
REPLY RSS http://www.soulfree.net/rss/comment/535
REPLY ATOM http://www.soulfree.net/atom/comment/535
이름 :
비밀번호 :
홈사이트 :
비밀글 :
정말 대단하다...

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/17 14:41 2008/08/17 14:41
tagged with  , ,
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/534
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/534
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/534
REPLY RSS http://www.soulfree.net/rss/comment/534
REPLY ATOM http://www.soulfree.net/atom/comment/534
이름 :
비밀번호 :
홈사이트 :
비밀글 :
#FFFFFF = White / 하얀색 LOVE
#FF0000 = Red / 빨간색 LOVE
#00FF00 = Green / 녹색 LOVE
#0000FF = Blue / LOVE
#FF00FF = Magenta / LOVE
#00FFFF = Cyan / LOVE
#FFFF00 = Yellow / LOVE
#000000 = Black / LOVE
#70DB93 = Aquamarine / LOVE
#5C3317 = Baker's Chocolate / 초코렛 LOVE
#9F5F9F = Blue Violet / LOVE
#B5A642 = Brass / LOVE
#D9D919 = Bright Gold / LOVE
#A62A2A = Brown / LOVE
#8C7853 = Bronze / LOVE
#A67D3D = Bronze Ⅱ / LOVE
#5F9F9F = Cadet Blue / LOVE
#D98719 = Cool Copper / LOVE
#B87333 = Copper / LOVE
#FF7F00 = Coral / LOVE
#42426F = Corn Flower Blue / LOVE
#5C4033 = Dark Brown / LOVE
#2F4F2F = Dark Green / LOVE
#4A766E = Dark Green Copper / LOVE
#4F4F2F = Dark Olive Green / LOVE
#9932CD = Dark Orchid / LOVE
#871F78 = Dark Purple / LOVE
#6B238E = Dark Slate Blue / LOVE
#2F4F4F = Dark Slate Grey / LOVE
#97694F = Dark Tan / LOVE
#7093DB = Dark Turquoise / LOVE
#855E42 = Dark Wood / LOVE
#545454 = Dim Grey / LOVE
#856363 = Dusty Rose / LOVE
#D19275 = Feldspar / LOVE
#8E2323 = Firebrick / LOVE
#F5CCB0 = Flesh / LOVE
#238E23 = Forest Green / LOVE
#CD7F32 = Gold / LOVE
#DBDB70 = Goldenrod / LOVE
#C0C0C0 = Grey / LOVE
#527F76 = Green Copper / LOVE
#93DB70 = Green Yellow / LOVE
#215E21 = Hunter Green / LOVE
#4E2F2F = Indian Red / LOVE
#9F9F5F = Khaki / LOVE
#C0D9D9 = Light Blue / LOVE
#A8A8A8 = Light Grey / LOVE
#8F8FBD = Light Steel Blue / LOVE
#E9C2A6 = Light Wood / LOVE
#32CD32 = Lime Green / LOVE
#E47833 = Mandarian Orange / LOVE
#8E236B = Maroon / LOVE
#3299CD = Medium Aquamarine / LOVE
#3232CD = Medium Blue / LOVE
#6B8E23 = Medium Forest Green / LOVE
#EAEAAE = Medium Goldenrod / LOVE
#9370DB = Medium Orchid / LOVE
#426F42 = Medium Sea Green / LOVE
#7F00FF = Medium Slate Blue / LOVE
#7FFF00 = Medium Spring Green / LOVE
#70DBDB = Medium Turquoise / LOVE
#DB7093 = Medium Violet Red / LOVE
#A68064 = Medium Wood / LOVE
#2F2F4F = Midnight Blue / LOVE
#23238E = Navy Blue / LOVE
#4D4DFF = Neon Blue / LOVE
#FF6EC7 = Neon Pink / LOVE
#00009C = New Midnight Blue / LOVE
#EBC79E = New Tan / LOVE
#CFB53B = Old Gold / LOVE
#FF7F00 = Orange / LOVE
#FF2400 = Orange Red / LOVE
#DB70DB = Orchid / LOVE
#8FBC8F = Pale Green / LOVE
#BC8F8F = Pink / LOVE
#EAADEA = Plum / LOVE
#D9D9F3 = Quartz / LOVE
#5959AB = Rich Blue / LOVE
#6F4242 = Salmon / LOVE
#8C1717 = Scarlet / LOVE
#238E68 = Sea Green / LOVE
#6B4226 = Semi-Sweet Chocolate / LOVE
#8E6B23 = Sienna / LOVE
#E6E8FA = Silver / LOVE
#3299CC = Sky Blue / LOVE
#007FFF = Slate Blue / LOVE
#FF1CAE = Spicy Pink / LOVE
#00FF7F = Spring Green / LOVE
#236B8E = Steel Blue / LOVE
#38B0DE = Summer Sky / LOVE
#DB9370 = Tan / LOVE
#D8BFD8 = Thistle / LOVE
#ADEAEA = Turquoise / LOVE
#5C4033 = Very Dark Brown / LOVE
#CDCDCD = Very Light Grey / LOVE
#4F2F4F = Violet / LOVE
#CC3299 = Violet Red / LOVE
#D8D8BF = Wheat / LOVE
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/16 17:19 2008/08/16 17:19
tagged with  
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/533
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/533
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/533
REPLY RSS http://www.soulfree.net/rss/comment/533
REPLY ATOM http://www.soulfree.net/atom/comment/533
이름 :
비밀번호 :
홈사이트 :
비밀글 :
출처 : 오라클 홈페이지 (http://kr.forums.oracle.com)
         OTN 디스커션 포럼 » 새로운 Technical Bulletin » Database 
         주소 : http://kr.forums.oracle.com/forums/thread.jspa?threadID=464142&tstart=1025

남음과 남지 않음의 차이~~
=====================================================================================

CHAR와 VARCHAR2 TYPE의 차이
===========================


Purpose
-------
Varchar2 type과 Char type의 차이를 이해한다.


Explanation
-----------

CHAR와 VARCHAR2(VARCHAR)의 차이를 간단히 설명한다면 CHAR DATATYPE은
FIXED LENGTH CAHRACTER STRING을 저장합니다.
만약 TABLE이 CHAR COLUMN을 갖고 CREATE될때 COLUMN LEGTH는 BYTES로
1에서 255까지의 DATA를 저장할 수 있읍니다. COLUMN길이가 10 으로 정의
었을때 한번 INSERT 문장을 통해 5 BYTES를 입력하였다면 나머지 5 BYTES는
SPACE 처리되어 그 DATA의 SIZE는 10 BYTE가 됩니다.

SQLPLUS의 VSIZE함수를 통해 알아보면 다음과 같습니다.

SQL> SELECT VSIZE(column_name) FROM table_name;

column_name
------------
10
10

반면에 VARCHAR2 DATATYPE은 VARIABLE-LENGTH CHARACTER STRINGS을 저장합
니다. 만약 TABLE이 VARCHAR2 COLUMN을 갖고 CREATE될때 COLUMN LENGTH 1에서
2000 BYTES까지의 DATA를 저장할수 있습니다. COLUMN길이가 10 으로 정의되었
을때 번 INSERT 문장을 통해 5 BYTES를 입력하였다면 나머지 5 BYTES는
NULL 처리되어 그 DATA의 SIZE는 5 BYTE가 됩니다.

SQLPLUS의 VSIZE함수를 통해 알아보면 다음과 같습니다.

SQL> SELECT VSIZE(column_name) FROM table_name;

column_name
------------
5
5

위와 같은 특징을 갖고 있기 때문에 정확히 구분하여 사용해야만 SPACE를
절약할수 있고 ERROR를 방지할수 있습니다.

만약 사용자가 COMPARISON상에서 ANSI 호환성을 요구한다면 를 DATA TYPE를
CHAR로 선언해야 합니다. 즉 나머지공간(TRAILING BLANK)이 STRING
COMPARISONS에서 중요한다면 CHAR로 해야합니다. 그런 특수한 경우 제외한
나머지 경우에는 VARCAHR2로 사용하는 것이 SPACE가 절약 될 것 입니다.


Reference Document
------------------
Oracle SQL Reference Guide
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/14 14:50 2008/08/14 14:50
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/532
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/532
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/532
REPLY RSS http://www.soulfree.net/rss/comment/532
REPLY ATOM http://www.soulfree.net/atom/comment/532
이름 :
비밀번호 :
홈사이트 :
비밀글 :
왜 내가 링크를 안걸어 두었을까나...
http://blog.naver.com/devstory/120017823416
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/08/11 17:07 2008/08/11 17:07
REPLY AND TRACKBACK RSS http://www.soulfree.net/rss/response/530
REPLY AND TRACKBACK ATOM http://www.soulfree.net/atom/response/530
TRACKBACK ADDRESS
http://www.soulfree.net/trackback/530
REPLY RSS http://www.soulfree.net/rss/comment/530
REPLY ATOM http://www.soulfree.net/atom/comment/530
이름 :
비밀번호 :
홈사이트 :
비밀글 :

Commons-Fileupload 1.2


1.2 버젼이 2007.2.13에 새롭게배포되었습니다

1.1 이하단계 버젼과 달라진 점을 알아보도록 하지요

 

I. commons-fileupload 1.1

http://www.jakartaproject.com/article/jakarta/110887666654000

 

 

II. 다운로드 및 설치

 -. fileupload는 commons의 io가 필요합니다

commons-fileupload

http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.cgi

commons-io

http://jakarta.apache.org/site/downloads/downloads_commons-io.cgi

 

 

III. 달라진점

 -. DiskFileUpload 가 Deprecated 되었습니다

 -. 리스너 추가를 통해 업로드 진행 상태를 파악할 수 있습니다(대용량 파일인 경우 유용)

 -. 비정상적인 업로드시 나타나는 중간 쓰레기 파일들을 제거할 수 있습니다

 

IV. 예제소스코드


upload.html

<form name=fileupload method=post action=./upload enctype="multipart/form-data">
 file : <input type=file name=file1><br>
 text : <input type=text name=text1><br>
 <input type=submit name=button1 value=submit>
</form>

web.xml

가비지 파일 cleaner에 사용되는 FileCleanerCleanup을 listener로 추가

샘플 코드에서 사용되는 서블릿 등록

<web-app>

   ...

 

   <listener>
       <listener-class>
           org.apache.commons.fileupload.servlet.FileCleanerCleanup
       </listener-class>
   </listener>


    ...


    <servlet>
        <servlet-name>uploadServlet</servlet-name>
        <servlet-class>UploadServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>uploadServlet</servlet-name>
        <url-pattern>/upload</url-pattern>
    </servlet-mapping>

    ...

</web-app>


UploadServlet.java


import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;


public class UploadServlet extends HttpServlet {
   
    String upload_dir = null;
    public void init(ServletConfig config) throws ServletException {
          super.init(config); 
          upload_dir = config.getServletContext().getRealPath("/upload/");
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   

        // form type이 multipart/form-data 면 true 그렇지 않으면 false를 반환
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
       
        if (isMultipart) {
            try {

                int yourMaxMemorySize = 1024 * 10;                 // threshold  값 설정
                long yourMaxRequestSize = 1024 * 1024 * 100;   //업로드 최대 사이즈 설정 (100M)

                File yourTempDirectory = new File(upload_dir);
               
                DiskFileItemFactory factory = new DiskFileItemFactory();
                factory.setSizeThreshold(yourMaxMemorySize);
                factory.setRepository(yourTempDirectory);               
   
                ServletFileUpload upload = new ServletFileUpload(factory);
                upload.setSizeMax(yourMaxRequestSize);          // 임시 업로드 디렉토리 설정
                upload.setHeaderEncoding("EUC_KR");               // 인코딩 설정
               

                /**

                 *  업로드 진행 상태 출력 (Watching progress)

                */
                ProgressListener progressListener = new ProgressListener(){
                   private long megaBytes = -1;
                   public void update(long pBytesRead, long pContentLength, int pItems) {
                       long mBytes = pBytesRead / 1000000;
                       if (megaBytes == mBytes) {
                           return;
                       }
                       megaBytes = mBytes;
                       System.out.println("We are currently reading item " + pItems);
                       if (pContentLength == -1) {
                           System.out.println("So far, " + pBytesRead + " bytes have been read.");
                       } else {
                           System.out.println("So far, " + pBytesRead + " of " + pContentLength
                                              + " bytes have been read.");
                       }
                   }
                };
                upload.setProgressListener(progressListener);   // 진행상태 리스너 추가
   

                String fieldName = null;
                String fieldValue = null;
                String fileName = null;
                String contentType = null;
                long sizeInBytes = 0;

                List items = upload.parseRequest(request);               
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
   

                    // 정상적인 폼값 출력 및 처리
                    if (item.isFormField()) {
                        fieldName = item.getFieldName();
                        fieldValue = item.getString();
                       
                        System.out.println("-----+-----+-----+-----+-----+-----+-----+-----");
                        System.out.println("Field Name : "+fieldName);
                        System.out.println("Field Value : "+fieldValue);
                        System.out.println("-----+-----+-----+-----+-----+-----+-----+-----");
                       

                    // 업로드 파일 처리
                    } else {
                        fieldName = item.getFieldName();
                        fileName = item.getName();
                        contentType = item.getContentType();
                        sizeInBytes = item.getSize();
                       
                        System.out.println("-----+-----+-----+-----+-----+-----+-----+-----");
                        System.out.println("Field Name : "+fieldName);
                        System.out.println("File Name : "+fileName);
                        System.out.println("ContentType : "+contentType);
                        System.out.println("File Size : "+sizeInBytes);
                        System.out.println("-----+-----+-----+-----+-----+-----+-----+-----");

                        String savefile = fileName.substring(fileName.lastIndexOf("\\")+1, fileName.length());
                        File uploadedFile = new File(upload_dir+"\\"+savefile);
                        item.write(uploadedFile);
                    }
                }


            // 설정한 업로드 사이즈 초과시 exception 처리
            } catch (SizeLimitExceededException e) {
                e.printStackTrace();   

            // 업로드시 io등 이상 exception 처리
            } catch (FileUploadException e) {
                e.printStackTrace();

            // 기타 exception 처리
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }   
}


V. 실행결과