웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
대용량 파일 업로드 컴포넌트
2005.06.15 14:14
http://sangsangsoft.com정말 마지막 버젼이 아닐까 생각한다 ㅡ.ㅡ
ver4에서 업그레이드 된 부분은 아래와 같다.
기존의 중복방지 (시분초) 를 붙이던 부분을 찜찜함을 이기지 못 하고 타임스탬프 값으로 교체했다. 결론적으로 거의 중복이 일어날 상황이 없다는 것이다.
data.zip ==(중복발생)==> data(1234567890).zip 로 변경
기존에는 중복발생시 그래도 의미있는 값을 붙여보고자 했는데 생각해 보니 별 쓸모 없는 값이었다. 어차피 더미라고 생각되서 타임스탬프를 사용하기로 했다.
여기까지가 끝이라고 생각했는데... 어떤분이 .php나 기타 스크립트 파일을 업로드 제한을 해달라고 해서 적용해 봤다.
사실 업로드만 신경써서 다른 스크립트 파일이 올라갔을 때는 신경 안 쓰고 있었는데 이것도 큰 문제일것 같아서 아래와 같이 처리해 봤다.
.php .php3 .php4 .htm .html .cgi .pl .jsp .asp 파일이 업로드 되면 긑에 .txt를 붙여서 일반 텍스트 파일로 인식하게 했다.
그냥 막아 버리면 업로드컴포넌트 역활을 넘어서기에 업로드를 시키는대신 .txt를 붙이므로 스크립트 실행을 막았다.
이제 마지막이라는 기분으로 사용법을 정리하자면...
업로드폼이 있는 html 파일에서
<form method="post" action="upload.cgi" enctype="multipart/form-data">
이거 밑에 이 두가지 히든 폼이 반드시 들어가야 된다. 업로드 태그보다 앞에 있어야 된다는 말이다.
<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">
name="upload_dir" value="up_data/" <== 업로드 시킬 경로 마지막 /는 붙이던 안 붙이던 상관없음. upload.cgi를 중심으로 상대경로를 적어주면 된다.
name="return_url" value="end.php" <== 업로드가 완료되고난 후 이동할 파일 ( 보통 여기서 DB 작업을 하게 된다. 업로드폼의 데이터가 post로 submit 되기 때문에 일반 프로그램하듯이 그냥 하면 된다. 업로드 파일은 <input type="file" name="upfile"> 이런 식으로 사용시 echo $upfile; 하면 업로드 된 파일의 이름이 나오게 된다. upfile[]의 배열 방식도 echo $upfile[0]; 똑같이 업로드 시킨 파일의 이름이 나오게 된다.
== up.html ==
<form method="post" action="upload.cgi" enctype="multipart/form-data">
<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">
name <input type="text" name="name">
.....
....
..
</form>
아직도 테스트는 하고 있는데 어디서 버그가 발견 될지는 모르겠다. 버그 발견시 즉시 신고를 해주시기 바랍니다^^ 그럼...
ver4에서 업그레이드 된 부분은 아래와 같다.
기존의 중복방지 (시분초) 를 붙이던 부분을 찜찜함을 이기지 못 하고 타임스탬프 값으로 교체했다. 결론적으로 거의 중복이 일어날 상황이 없다는 것이다.
data.zip ==(중복발생)==> data(1234567890).zip 로 변경
기존에는 중복발생시 그래도 의미있는 값을 붙여보고자 했는데 생각해 보니 별 쓸모 없는 값이었다. 어차피 더미라고 생각되서 타임스탬프를 사용하기로 했다.
여기까지가 끝이라고 생각했는데... 어떤분이 .php나 기타 스크립트 파일을 업로드 제한을 해달라고 해서 적용해 봤다.
사실 업로드만 신경써서 다른 스크립트 파일이 올라갔을 때는 신경 안 쓰고 있었는데 이것도 큰 문제일것 같아서 아래와 같이 처리해 봤다.
.php .php3 .php4 .htm .html .cgi .pl .jsp .asp 파일이 업로드 되면 긑에 .txt를 붙여서 일반 텍스트 파일로 인식하게 했다.
그냥 막아 버리면 업로드컴포넌트 역활을 넘어서기에 업로드를 시키는대신 .txt를 붙이므로 스크립트 실행을 막았다.
이제 마지막이라는 기분으로 사용법을 정리하자면...
업로드폼이 있는 html 파일에서
<form method="post" action="upload.cgi" enctype="multipart/form-data">
이거 밑에 이 두가지 히든 폼이 반드시 들어가야 된다. 업로드 태그보다 앞에 있어야 된다는 말이다.
<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">
name="upload_dir" value="up_data/" <== 업로드 시킬 경로 마지막 /는 붙이던 안 붙이던 상관없음. upload.cgi를 중심으로 상대경로를 적어주면 된다.
name="return_url" value="end.php" <== 업로드가 완료되고난 후 이동할 파일 ( 보통 여기서 DB 작업을 하게 된다. 업로드폼의 데이터가 post로 submit 되기 때문에 일반 프로그램하듯이 그냥 하면 된다. 업로드 파일은 <input type="file" name="upfile"> 이런 식으로 사용시 echo $upfile; 하면 업로드 된 파일의 이름이 나오게 된다. upfile[]의 배열 방식도 echo $upfile[0]; 똑같이 업로드 시킨 파일의 이름이 나오게 된다.
== up.html ==
<form method="post" action="upload.cgi" enctype="multipart/form-data">
<input type="hidden" name="upload_dir" value="up/">
<input type="hidden" name="return_url" value="end.php">
name <input type="text" name="name">
.....
....
..
</form>
아직도 테스트는 하고 있는데 어디서 버그가 발견 될지는 모르겠다. 버그 발견시 즉시 신고를 해주시기 바랍니다^^ 그럼...
댓글 4
-
OTLNO
2005.07.06 10:26
-
OTLNO
2005.06.22 01:20
버그가 있어서 수정본 다시 올립니다 ㅠ.ㅠ -
타스케
2005.07.06 00:06
음.. 제로보드 하고 연동 시킬 수도 있을까요? ^^;
그리고 제로보드가 설치된 서버가 아닌 다른 서버로 파일만 저장할 수도 있을까요?
제로보드가 설치된 서버에 파일도 같이 올라가면
트래픽 때문에 제로보드 보기도 힘들 때가 있더군요. ;;
아, 매번 궁금했던 건데 관련 글이 올라왔길래 질문 한번 해 봅니다. =0=; -
타스케
2005.07.06 11:29
아.. 그렇군요. 답변 감사합니다!
예전에 어떤 사이트에서 업로드를 그런 방식으로 하길래 무척 궁금해서요. ^^;
업로드하면 그 파일의 주소는 다른 곳...
그런데 그 사이트가 현재는 망해버려서.. ㅡㅡ;
제목 | 글쓴이 | 날짜 |
---|---|---|
[PHP 동영상강좌] 9. form태그를 이용한 값의 전달 [15] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 8. Get방식의 전달과 테이블, 스타일태그의 사용 [13] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 7. Get방식을 이용한 변수의 전달 [12] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 6. Hello PHP [14] | 서기 | 2005.11.22 |
[PHP 동영상강좌] 5. 웹서버/웹브라우져/PHP란 무엇인가 [12] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 4. 스타일 시트 [17] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 3. 테이블 태그의 심화 [10] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 2. 하이퍼링크, 테이블태그의 사용방법 [15] | 서기 | 2005.11.17 |
[PHP 동영상강좌] 1. HTML이란 무엇인가! [22] | 서기 | 2005.11.17 |
주민등록번호 진위확인 [5] | 엔시™ | 2005.11.08 |
예전에 책원고로 만들었던것인데 필요한분 사용하세요 [7] | 유창화 | 2005.10.22 |
이쁜 달력소스입니다. [2] | 최문혁 | 2005.09.05 |
자기계정에서 file()가 잘안될때.... [5] | 이진환님 | 2005.08.18 |
일년치 달력을 한꺼번에 보자!!! [4] | 未淚 | 2005.08.07 |
효율적인 경로 지정하기 [9] | 대류 | 2005.07.27 |
대용량 파일 업로드 컴포넌트 [4] | OTLNO | 2005.06.15 |
트랙백 기능 구현하기. | 태규 | 2005.06.12 |
나만의 미니홈 만들기 ㅡ 메모장 소스 | 예뜨락 | 2005.06.09 |
mysql 테이블 스키마 보는법. [2] | 최문혁 | 2005.05.14 |
나만의 미니홈 만들기 ㅡ 메모장 디자인 (html 소스) [4] | 예뜨락 | 2005.05.12 |
그리고 다른 서버에 업로드는 불가능합니다. upload.cgi를 중심으로 상대 경로에 저장할 수 있습니다. ^^