다중업로드소스 - 검증완료
작성자 : 김영철
등록날짜 : 2009.01.14 22:23
1. 업로드 부분
<SCRIPT LANGUAGE="JavaScript">
<!--
// 다중 업로드
var total_image = 1;
function add_upload(){
if(total_image < 20){
var objTbl = document.all["upload_file_table"];
var objRow = objTbl.insertRow();
var objCell = objRow.insertCell();
objCell.innerHTML += "<input type='file' name='upload_file["+total_image+"]' size='25' onMouseover=\"image_preview(this);\"><br>";
}
total_image++;
}
// 이미지 미리 보기
var preview = new Image();
function image_preview(obj){
var now_image = false;
var temp;
preview.src = obj.value;
// 지정된 폭, 높이
var imageWidth = 200;
var imageHeight = 150;
// 이미지 일 경우 미리 보기
if(obj.value.match(/(.jpg|.jpeg|.gif|.png)/)){
preview_image.src = obj.value;
// 이미지 비율
var Yrate = preview.width/preview.height;
var Xrate = preview.height/preview.width;
if(preview.width > imageWidth||preview.height > imageHeight){
// 폭이 지정된 폭보다 클 경우
if(preview.width > imageWidth){
preview_image.width = imageWidth;
preview_image.height = imageWidth * Xrate;
}
// 높이가 지정된 높이보다 클 경우
if(preview.height > imageHeight){
preview_image.height = imageHeight;
preview_image.width = imageHeight * Yrate;
}
}
}
// 전체 이미지가 없을 경우 이미지 없음으로
for(var i=0; total_image>i; i++){
temp = document.all.upload_test["upload_file["+i+"]"].value;
if(temp.match(/(.jpg|.jpeg|.gif|.png)/)){
now_image = true;
}
}
if(!now_image){
preview_image.src = "image_preview.gif";
preview_image.width = 120;
preview_image.height = 90;
}
}
//-->
</script>
<form name="upload_test" action="test_ok.php" method="post" enctype="multipart/form-data">
<a href="#none" onClick="add_upload();">add upload</a>
<!-- 첨부파일 테이블 //-->
<table id="upload_file_table">
<tr>
<td>
<input type='file' name='upload_file[0]' size='25' onMouseover="image_preview(this);" value="test"><br>
</td>
</tr>
</table>
<input type="submit" value="전송">
</form>
이미지 미리 보기
<img src="image_preview.gif" name="preview_image" width="120" height="90">
2. 저장 부분
<?
function upload_save($save_dir){
global $setup,$HTTP_POST_FILES;
// 변수 설정
$thetime = time();
if(!$setup[use_pds]) return false;
// 중복 체크
for($i=0; sizeof($HTTP_POST_FILES[upload_file][name])>$i; $i++){
if($HTTP_POST_FILES[upload_file][name][$i]){
$file_names[$i] = $HTTP_POST_FILES[upload_file][name][$i];
}
}
if($file_names) if(sizeof($file_names)!=sizeof(array_unique($file_names))) error("중복된 파일이 있습니다.");
// 업로드
for($i=0; sizeof($HTTP_POST_FILES[upload_file])>$i; $i++){
$file = $HTTP_POST_FILES[upload_file][tmp_name][$i];
$file_name = $HTTP_POST_FILES[upload_file][name][$i];
$file_size = $HTTP_POST_FILES[upload_file][size][$i];
$file_type = $HTTP_POST_FILES[upload_file][type][$i];
// 크기 체크
if($file_size>$setup[max_upload]) error("3Mbyte 이상 업로드 하실 수 없습니다.");
if($file_size>0){
$s_file_name = $file_name;
// 체크
if(!is_uploaded_file($file)) error("업로드한 파일이 존재 하지 않습니다.");
// 확장자 체크
$no_names = array("php","html","inc","phtm","htm","shtm","ztx","dot","asp","cgi","pl");
$_file_name = explode(".",$file_name);
for($i2=0; sizeof($_file_name)>$i2; $i2++){
if(in_array(strtolower($_file_name[$i2]),$no_names)) error("HTML, CGI 관련 언어는 올리실 수 없습니다.");
}
$file = eregi_replace("\\\\","\\",$file);
$file_name = str_replace(" ","_",$s_file_name);
$s_file_name = str_replace("-","_",$s_file_name);
// 디렉토리를 검사함
if(!is_dir($save_dir)) {
@mkdir($save_dir,0777);
@chmod($save_dir,0706);
}
// 파일 저장
if(!file_exists($save_dir.$s_file_name)){
if(!move_uploaded_file($file,$save_dir.$s_file_name)) Error("파일업로드가 제대로 되지 않았습니다");
$file_name="data/$id/".$s_file_name;
@chmod($file_name,0706);
}else{ // 증복 파일이 있을때
@mkdir($save_dir.$thetime,0777);
if(!move_uploaded_file($file,$save_dir.$thetime."/".$s_file_name)) Error("파일업로드가 제대로 되지 않았습니다");
$file_name = $save_dir.$thetime."/".$s_file_name;
@chmod($file_name,0706);
@chmod($save_dir.$thetime,0707);
}
// 쿼리문 저장
}
}
}
// 에러 함수
function error($message){
echo "$message";
exit;
}
// 셋업
$setup[use_pds] = 1; // 자료실 기능 사용
$setup[max_upload] = 1024 * 1024 * 3; // 업로드 용량 제한
$id = "talkbox";
$save_dir = "data/".$id."/"; // 저장 폴더
upload_save($save_dir);
?>
<SCRIPT LANGUAGE="JavaScript">
<!--
// 다중 업로드
var total_image = 1;
function add_upload(){
if(total_image < 20){
var objTbl = document.all["upload_file_table"];
var objRow = objTbl.insertRow();
var objCell = objRow.insertCell();
objCell.innerHTML += "<input type='file' name='upload_file["+total_image+"]' size='25' onMouseover=\"image_preview(this);\"><br>";
}
total_image++;
}
// 이미지 미리 보기
var preview = new Image();
function image_preview(obj){
var now_image = false;
var temp;
preview.src = obj.value;
// 지정된 폭, 높이
var imageWidth = 200;
var imageHeight = 150;
// 이미지 일 경우 미리 보기
if(obj.value.match(/(.jpg|.jpeg|.gif|.png)/)){
preview_image.src = obj.value;
// 이미지 비율
var Yrate = preview.width/preview.height;
var Xrate = preview.height/preview.width;
if(preview.width > imageWidth||preview.height > imageHeight){
// 폭이 지정된 폭보다 클 경우
if(preview.width > imageWidth){
preview_image.width = imageWidth;
preview_image.height = imageWidth * Xrate;
}
// 높이가 지정된 높이보다 클 경우
if(preview.height > imageHeight){
preview_image.height = imageHeight;
preview_image.width = imageHeight * Yrate;
}
}
}
// 전체 이미지가 없을 경우 이미지 없음으로
for(var i=0; total_image>i; i++){
temp = document.all.upload_test["upload_file["+i+"]"].value;
if(temp.match(/(.jpg|.jpeg|.gif|.png)/)){
now_image = true;
}
}
if(!now_image){
preview_image.src = "image_preview.gif";
preview_image.width = 120;
preview_image.height = 90;
}
}
//-->
</script>
<form name="upload_test" action="test_ok.php" method="post" enctype="multipart/form-data">
<a href="#none" onClick="add_upload();">add upload</a>
<!-- 첨부파일 테이블 //-->
<table id="upload_file_table">
<tr>
<td>
<input type='file' name='upload_file[0]' size='25' onMouseover="image_preview(this);" value="test"><br>
</td>
</tr>
</table>
<input type="submit" value="전송">
</form>
이미지 미리 보기
<img src="image_preview.gif" name="preview_image" width="120" height="90">
2. 저장 부분
<?
function upload_save($save_dir){
global $setup,$HTTP_POST_FILES;
// 변수 설정
$thetime = time();
if(!$setup[use_pds]) return false;
// 중복 체크
for($i=0; sizeof($HTTP_POST_FILES[upload_file][name])>$i; $i++){
if($HTTP_POST_FILES[upload_file][name][$i]){
$file_names[$i] = $HTTP_POST_FILES[upload_file][name][$i];
}
}
if($file_names) if(sizeof($file_names)!=sizeof(array_unique($file_names))) error("중복된 파일이 있습니다.");
// 업로드
for($i=0; sizeof($HTTP_POST_FILES[upload_file])>$i; $i++){
$file = $HTTP_POST_FILES[upload_file][tmp_name][$i];
$file_name = $HTTP_POST_FILES[upload_file][name][$i];
$file_size = $HTTP_POST_FILES[upload_file][size][$i];
$file_type = $HTTP_POST_FILES[upload_file][type][$i];
// 크기 체크
if($file_size>$setup[max_upload]) error("3Mbyte 이상 업로드 하실 수 없습니다.");
if($file_size>0){
$s_file_name = $file_name;
// 체크
if(!is_uploaded_file($file)) error("업로드한 파일이 존재 하지 않습니다.");
// 확장자 체크
$no_names = array("php","html","inc","phtm","htm","shtm","ztx","dot","asp","cgi","pl");
$_file_name = explode(".",$file_name);
for($i2=0; sizeof($_file_name)>$i2; $i2++){
if(in_array(strtolower($_file_name[$i2]),$no_names)) error("HTML, CGI 관련 언어는 올리실 수 없습니다.");
}
$file = eregi_replace("\\\\","\\",$file);
$file_name = str_replace(" ","_",$s_file_name);
$s_file_name = str_replace("-","_",$s_file_name);
// 디렉토리를 검사함
if(!is_dir($save_dir)) {
@mkdir($save_dir,0777);
@chmod($save_dir,0706);
}
// 파일 저장
if(!file_exists($save_dir.$s_file_name)){
if(!move_uploaded_file($file,$save_dir.$s_file_name)) Error("파일업로드가 제대로 되지 않았습니다");
$file_name="data/$id/".$s_file_name;
@chmod($file_name,0706);
}else{ // 증복 파일이 있을때
@mkdir($save_dir.$thetime,0777);
if(!move_uploaded_file($file,$save_dir.$thetime."/".$s_file_name)) Error("파일업로드가 제대로 되지 않았습니다");
$file_name = $save_dir.$thetime."/".$s_file_name;
@chmod($file_name,0706);
@chmod($save_dir.$thetime,0707);
}
// 쿼리문 저장
}
}
}
// 에러 함수
function error($message){
echo "$message";
exit;
}
// 셋업
$setup[use_pds] = 1; // 자료실 기능 사용
$setup[max_upload] = 1024 * 1024 * 3; // 업로드 용량 제한
$id = "talkbox";
$save_dir = "data/".$id."/"; // 저장 폴더
upload_save($save_dir);
?>
<? mysql_query("INSERT INTO $download_table"."_$id (parent,file_name,s_file_name)values('$no','$file_name','$s_file_name')")or error(mysql_error()); ?>
출처 : php스쿨
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|