ThinkPHP 프레임 워 크 구현 FTP 이미지 업로드 기능 예시

이 글 은 ThinkPHP 프레임 워 크 가 FTP 이미지 업로드 기능 을 실현 하 는 것 을 실례 로 다 루 고 있다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
배경:
사진 업로드 기능 은 매우 보편적 인 것 일 것 입 니 다.여기 서 ThinkpHP 프레임 워 크 의 통합 방법 을 참고 하여 FTP 사진 의 업로드 기능 을 정리 하 였 습 니 다.이렇게 하면 배경 에서 조작 할 때 관련 사진 을 온라인 이미지 서버 에 직접 업로드 하여 대 유량 방문 사진 의 로드 가 느 리 지 않도록 사이트 의 방문 압력 을 낮 추고 불합리한 점 을 지적 해 주 십시오.
동작:
1.전단 설계
여 기 는 주로 테스트 기능 의 실현 을 위해 가장 간단 한 디자인 을 사용 하여 참고 하기 편리 할 뿐만 아니 라 후기의 기능 확장 에 도 유리 하 다.아래 에 upload.html 의 주요 코드 를 첨부 하고 빨간색 상자 에 동 그 라 미 를 친 코드 에 중심 을 두 고 있 습 니 다.그 중에서 css 스타일 이 비교적 간단 합 니 다.필요 한 것 은 뒤의 소스 코드 를 참고 할 수 있 습 니 다.

2.백 스테이지 컨트롤 러 디자인
config.class.phop 의 주요 코드 는 다음 과 같 습 니 다.그 중에서 디자인 된 표'conf'는 여기 서 두 필드 만 사용 하면 됩 니 다.'tag','value'는 간단 한 varchar 형식 을 사용 할 수 있 습 니 다.

public function upload(){
  if (IS_POST){
    foreach ($_FILES as $key => $value){
      $img = handleImg($key);
      $furl = C('REMOTE_ROOT').$img;
      if ($img){
        ftp_upload($furl,$img);
        $saveData['value'] = $img;
        M('conf')
          ->where("tag = '".$key."'")
          ->save($saveData);
      }
    }
    $this->success('FTP     ',U('Config/upload'),2);
  }else{
    $imgUrl = M('conf')
      ->where("tag = 'upImg'")
      ->getField('value');
    $this->assign('imgUrl',$imgUrl);
    $this->display();
  }
}

3.데이터 설정
공공 프로필 에서 다음 과 같은 상수 의 데이터 설정 을 진행 합 니 다.코드 는 다음 과 같 습 니 다.FTP 계 정과 비밀번호 의 정확성 을 설정 하 는 것 에 주의 하 십시오.여기 서 안전 한 것 은 예 일 뿐 입 니 다.

//ftp(     )        
'FTP_SEVER'    => 'http://img.52zhenmi.com', //   ,                  
'FTP_HOST'    => 'img.52zhenmi.com',
'WEB_SEVER'   => 'http://img.52zhenmi.com',
'WEB_M_SERVER'  => 'http://www.52zhenmi.com/m',
'FTP_NAME'    => 'fexxxi',//ftp  
'FTP_PWD'    => '1qxxxxxxw',//ftp  
'FTP_PORT'    => '21',//ftp  ,   21
'FTP_PASV'    => true,//        ,true  ,     
'FTP_SSL'    => false,//ssl  ,     
'FTP_TIMEOUT'  => 60,//    ,  60,   s
'REMOTE_ROOT'  => '/',//        

4.파일 도입
제 코드 를 예 로 들 면 두 개의 파일 을 인 용 했 습 니 다.그 중 FTP.class.php 는'/Library/Think'디 렉 터 리 에 놓 여 있 습 니 다.Upload.class.php 는'/Library/Org/Net'디 렉 터 리 에 놓 여 있 으 며,자신의 사용 습관 에 따라 디 렉 터 리 를 스스로 조정 할 수 있 으 며,예화 경 로 를 확보 할 때 문제 가 없 으 면 됩 니 다.
5.공통 함수 추가
위의 단계 2 에서 사용 한 공공 함 수 를 추가 하 는 것 을 주의 하 십시오.

/**
 *            
 * @param string $fileName      name
 * @return string        
 */
function handleImg($fileName){
  if($_FILES[$fileName]['tmp_name'] != ""){
    $img = $_FILES[$fileName];
    $imgUrl = __ROOT__."/public";
    $upload = new \Org\Net\Upload($img, $imgUrl);
    return $upload->main();
  }
}
//FTP      
function ftp_upload($remotefile,$localfile){
  $ftp = new \Think\Ftp();
  $data['server'] = C('FTP_HOST');
  $data['username'] = C('FTP_NAME');//ftp  
  $data['password'] = C('FTP_PWD');//ftp  
  $data['port'] = C('FTP_PORT');//ftp  ,   21
  $data['pasv'] = C('FTP_PASV');//        ,true  ,     
  $data['ssl'] = C('FTP_SSL');//ssl  ,     
  $data['timeout'] = C('FTP_TIMEOUT');//    ,  60,   s
  $info = $ftp->start($data);
  if($info){
    if($ftp->put($remotefile,$localfile)){}
  }
  $ftp->close();
}

6.조작 캡 처


7.힌트
이 참고 코드 에 대해 관련 된 공공 방법handleImg()은 업로드 해 야 할 사진 을 현재 작 동 하 는 사이트 루트 디 렉 터 리 에 먼저 전송 한 다음 에ftp_upload()을 통 해 해당 하 는 이미지 FTP 서버 에 사진 을 전송 합 니 다.실현 절차 에서 볼 때 첫 번 째 단 계 는 불필요 합 니 다.주로 개발 과정 에서 테스트 서버 가 FTP 계 정 요구 에 부합 되 지 않 습 니 다.또한 온라인 콘 텐 츠 수정 을 편리 하 게 하고 최적화 되 지 않 았 으 며 번 거 롭 지 않 습 니 다.여러분 들 이 자 유 롭 게 발휘 할 수 있 는 기 회 를 남 겨 두 는 셈 입 니 다.
원본 코드 는 여 기 를 클릭 하 십시오본 사이트 다운로드.
thinkpHP 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,ThinkpHP 입문 강좌,thinkpHP 템 플 릿 조작 기법 요약,ThinkPHP 상용 방법 총화,codeigniter 입문 강좌,CI(CodeIgniter)프레임 워 크 진급 강좌Zend FrameWork 프레임 워 크 입문 강좌.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기