[긴급:포인트제공]저장소 관련 소스좀 봐주세요 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

[긴급:포인트제공]저장소 관련 소스좀 봐주세요 정보

[긴급:포인트제공]저장소 관련 소스좀 봐주세요

본문

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;
        $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;
    $tmp_file  = $_FILES[bf_file][tmp_name][$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 (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;
        }
        // 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]");
        }
        // 프로그램 원래 파일명
        $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);
        // 접미사를 붙인 파일명
        //$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]);
        // 올라간 파일의 퍼미션을 변경합니다.
        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);
 }

 $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)
       {
            if(file_exists("$g4[path]/data/file/$bo_table/".$file_name))
            {
                  $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);
       $upload[$m][del_check] = false;
       $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를 닫는다


 
-------------------------------------------------------------------------
 
 
----------------------------Write_update.skin.php-----------------------
<?

 $server_host = "XXX.XX.XX.XX";  //-->원격서버의 ip주소
 $server_port = "21";    //-->원격서버의 port
 $server_id= "XXXX";    //-->원격서버의 서버id
 $server_pw = "XXXXXXXX";    //-->원격서버의 서버password
 
 //원격서버에 연결한다.
 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");
 
 //업로드할 폴더로 이동한다.
 $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;
  }
 
 //FTP를 닫는다
 ftp_quit($fc); 
?>
----------------------------------------------------------------------------
 

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT