[긴급:포인트제공]저장소 관련 소스좀 봐주세요 정보
[긴급:포인트제공]저장소 관련 소스좀 봐주세요본문
ActiveX컨트롤을 이용해서 업로드를 하고 있습니다.
업로드시에는 HTTP POST 방식을 사용중이구요
업로드할때 파일만 다른 서버로 이동을 하고 싶습니다.
기존 Wirte_update.php에서 아래 초록색 부분만 빨간색으로 수정되었습니다.
그리고 Write_Update.skin.php에 ftp소스를 추가 하였습니다.
현재 이동하고자하는 서버는 NAS Storage 형식입니다.
위에 ftp_put함수에서 제대로 적용이 안되는거 같은데...
오류가 뜨는것도 아니고 잘 모르겠네요...ㅠ.ㅠ
고수님들의 답변 부탁드립니다.
-------------------------write_update.php---------------------
/***************************************************************************
사비성™ 업/다운로더
**************************************************************************/
/*
for ($i=0; $i<count($_FILES[bf_file][name]); $i++)
{
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
if ($_POST[bf_file_del][$i])
{
$upload[$i][del_check] = true;
사비성™ 업/다운로더
**************************************************************************/
/*
for ($i=0; $i<count($_FILES[bf_file][name]); $i++)
{
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
if ($_POST[bf_file_del][$i])
{
$upload[$i][del_check] = true;
$row = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
@unlink("$g4[path]/data/file/$bo_table/$row[bf_file]");
}
else
$upload[$i][del_check] = false;
@unlink("$g4[path]/data/file/$bo_table/$row[bf_file]");
}
else
$upload[$i][del_check] = false;
$tmp_file = $_FILES[bf_file][tmp_name][$i];
$filename = $_FILES[bf_file][name][$i];
$filesize = $_FILES[bf_file][size][$i];
$filename = $_FILES[bf_file][name][$i];
$filesize = $_FILES[bf_file][size][$i];
// 서버에 설정된 값보다 큰파일을 업로드 한다면
if ($filename)
{
if ($_FILES[bf_file][error][$i] == 1)
{
$file_upload_msg .= "\'{$filename}\' 파일의 용량이 서버에 설정($upload_max_filesize)된 값보다 크므로 업로드 할 수 없습니다.\\n";
continue;
}
else if ($_FILES[bf_file][error][$i] != 0)
{
$file_upload_msg .= "\'{$filename}\' 파일이 정상적으로 업로드 되지 않았습니다.\\n";
continue;
}
}
if ($filename)
{
if ($_FILES[bf_file][error][$i] == 1)
{
$file_upload_msg .= "\'{$filename}\' 파일의 용량이 서버에 설정($upload_max_filesize)된 값보다 크므로 업로드 할 수 없습니다.\\n";
continue;
}
else if ($_FILES[bf_file][error][$i] != 0)
{
$file_upload_msg .= "\'{$filename}\' 파일이 정상적으로 업로드 되지 않았습니다.\\n";
continue;
}
}
if (is_uploaded_file($tmp_file))
{
// 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
if (!$is_admin && $filesize > $board[bo_upload_size])
{
$file_upload_msg .= "\'{$filename}\' 파일의 용량(".number_format($filesize)." 바이트)이 게시판에 설정(".number_format($board[bo_upload_size])." 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n";
continue;
}
{
// 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
if (!$is_admin && $filesize > $board[bo_upload_size])
{
$file_upload_msg .= "\'{$filename}\' 파일의 용량(".number_format($filesize)." 바이트)이 게시판에 설정(".number_format($board[bo_upload_size])." 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n";
continue;
}
// 4.00.11 - 글답변에서 파일 업로드시 원글의 파일이 삭제되는 오류를 수정
if ($w == 'u')
{
// 존재하는 파일이 있다면 삭제합니다.
$row = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
@unlink("$g4[path]/data/file/$bo_table/$row[bf_file]");
}
if ($w == 'u')
{
// 존재하는 파일이 있다면 삭제합니다.
$row = sql_fetch(" select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
@unlink("$g4[path]/data/file/$bo_table/$row[bf_file]");
}
// 프로그램 원래 파일명
$upload[$i][source] = $filename;
$upload[$i][filesize] = $filesize;
$upload[$i][source] = $filename;
$upload[$i][filesize] = $filesize;
// 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
$filename = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
$filename = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
// 접미사를 붙인 파일명
//$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.urlencode($filename);
// 달빛온도님 수정 : 한글파일은 urlencode($filename) 처리를 할경우 '%'를 붙여주게 되는데 '%'표시는 미디어플레이어가 인식을 못하기 때문에 재생이 안됩니다. 그래서 변경한 파일명에서 '%'부분을 빼주면 해결됩니다.
$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace('%', '', urlencode($filename));
//$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.urlencode($filename);
// 달빛온도님 수정 : 한글파일은 urlencode($filename) 처리를 할경우 '%'를 붙여주게 되는데 '%'표시는 미디어플레이어가 인식을 못하기 때문에 재생이 안됩니다. 그래서 변경한 파일명에서 '%'부분을 빼주면 해결됩니다.
$upload[$i][file] = abs(ip2long($_SERVER[REMOTE_ADDR])).'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace('%', '', urlencode($filename));
$dest_file = "$g4[path]/data/file/$bo_table/" . $upload[$i][file];
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES[bf_file][error][$i]);
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES[bf_file][error][$i]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);
chmod($dest_file, 0606);
$upload[$i][image] = @getimagesize($dest_file);
}
}
*/
}
*/
/***************************************************************************
사비성™ 업/다운로더
**************************************************************************/
// 파일 처리
$SABISUNGUploadedFiles = $HTTP_POST_VARS[SABISUNGUploadedFiles];
$SABISUNGDeltedFiles = $HTTP_POST_VARS[SABISUNGDeltedFiles];
$SABISUNGUploadingFiles = $HTTP_POST_VARS[SABISUNGUploadingFiles];
$uploaded_files = explode("<", $SABISUNGUploadedFiles);
$deleted_files = explode("<", $SABISUNGDeltedFiles);
$uploading_files = explode("<", $SABISUNGUploadingFiles);
// 기존 업로드되었던 파일 삭제(컨트롤에서 삭제된 파일들)
$m = 0;
foreach ($deleted_files as $d_filename) {
$upload[$m++][del_check] = true;
if(is_file("$g4[path]/data/file/$bo_table/".$d_filename) && file_exists("$g4[path]/data/file/$bo_table/".$d_filename))
unlink("$g4[path]/data/file/$bo_table/".$d_filename);
}
// 기존 업로드되었던 파일중에서 삭제되지 않은 파일 리스트
$remain_files = array_diff($uploaded_files, $deleted_files);
foreach($remain_files as $r_filename)
{
$upload[$m][del_check] = false;
$upload[$m][source] = $r_filename;
$upload[$m][filesize] = filesize("$g4[path]/data/file/$bo_table/".$r_filename);
$upload[$m][file] = $r_filename;
$upload[$m++][image] = @getimagesize("$g4[path]/data/file/ $bo_table/".$r_filename);
}
$upload[$m][del_check] = false;
$upload[$m][source] = $r_filename;
$upload[$m][filesize] = filesize("$g4[path]/data/file/$bo_table/".$r_filename);
$upload[$m][file] = $r_filename;
$upload[$m++][image] = @getimagesize("$g4[path]/data/file/ $bo_table/".$r_filename);
}
$sabisung_file_idx = $i;
foreach($HTTP_POST_FILES as $sabisung_file)
{
$file_name = $member[mb_nick].'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace(" ", "_", $sabisung_file['name']);
$file_tmp_name = $sabisung_file['tmp_name'];
$k = 1;
$file_ext = substr($file_name, strrpos($file_name, ".") + 1);
$filename = substr($file_name, 0, strrpos($file_name, "."));
while(true)
$file_name = $member[mb_nick].'_'.substr(md5(uniqid($g4[server_time])),0,8).'_'.str_replace(" ", "_", $sabisung_file['name']);
$file_tmp_name = $sabisung_file['tmp_name'];
$k = 1;
$file_ext = substr($file_name, strrpos($file_name, ".") + 1);
$filename = substr($file_name, 0, strrpos($file_name, "."));
while(true)
{
if(file_exists("$g4[path]/data/file/$bo_table/".$file_name))
if(file_exists("$g4[path]/data/file/$bo_table/".$file_name))
{
$file_name = $filename."[".$k."].".$file_ext;
$k++;
} else
break;
}
$file_name = $filename."[".$k."].".$file_ext;
$k++;
} else
break;
}
move_uploaded_file($file_tmp_name, "$g4[path]/data/file/$bo_table/".$file_name);
@chmod("$g4[path]/data/file/$bo_table/".$file_name, 0706);
$ipos = strpos($file_name,"_");
$source = substr($file_name,$ipos+10);
@chmod("$g4[path]/data/file/$bo_table/".$file_name, 0706);
$ipos = strpos($file_name,"_");
$source = substr($file_name,$ipos+10);
$upload[$m][del_check] = false;
$upload[$m][source] = $source;
$upload[$m][source] = $source;
$upload[$m][filesize] = filesize("$g4[path]/data/file/$bo_table/".$file_name);
$upload[$m][file] = $file_name;
$upload[$m++][image] = @getimagesize("$g4[path]/data/file/$bo_table/".$file_name);
} //FTP를 닫는다
$upload[$m][file] = $file_name;
$upload[$m++][image] = @getimagesize("$g4[path]/data/file/$bo_table/".$file_name);
} //FTP를 닫는다
-------------------------------------------------------------------------
----------------------------Write_update.skin.php-----------------------
<?
<?
$server_host = "XXX.XX.XX.XX"; //-->원격서버의 ip주소
$server_port = "21"; //-->원격서버의 port
$server_id= "XXXX"; //-->원격서버의 서버id
$server_pw = "XXXXXXXX"; //-->원격서버의 서버password
$server_pw = "XXXXXXXX"; //-->원격서버의 서버password
//원격서버에 연결한다.
if(!($fc = ftp_connect($server_host, $server_port)))
die("$server_host : $server_post - connect failed");
if(!($fc = ftp_connect($server_host, $server_port)))
die("$server_host : $server_post - connect failed");
//원격서버에 로그인한다.
if(!ftp_login($fc, $server_id, $server_pw))
die("$server_id - login failed");
if(!ftp_login($fc, $server_id, $server_pw))
die("$server_id - login failed");
//업로드할 폴더로 이동한다.
$server_dir = "/test/";
ftp_chdir($fc, $server_dir);
$server_dir = "/test/";
ftp_chdir($fc, $server_dir);
$local_file='/test/jgnu4/data/file/'.$bo_table."/". $file[$i][file];
if(!ftp_put($fc,$local_file, $server_dir, FTP_BINARY))
{
echo" <script name=javascript> window.alert ('파일을 지정한 디렉토리로 복사 하는 데 실패했습니다.');
history.go(-1)
</script>";
exit;
{
echo" <script name=javascript> window.alert ('파일을 지정한 디렉토리로 복사 하는 데 실패했습니다.');
history.go(-1)
</script>";
exit;
}
//FTP를 닫는다
ftp_quit($fc);
?>
ftp_quit($fc);
?>
----------------------------------------------------------------------------
댓글 전체
이용하시는 호스팅사가 ftp function 을 지원하는지 먼저 알아보세요.