이미지 업로드 기능은 매우 일반적이어야 합니다. 여기서는 FTP 이미지 업로드 기능을 분류하기 위해 ThinkPHP 프레임워크의 통합 방법을 참조합니다. 이를 통해 백그라운드 서버 작업 중에 관련 이미지를 온라인 이미지에 직접 업로드할 수 있습니다. 대규모 트래픽으로 인해 액세스되는 이미지의 느린 로딩을 방지하고 웹 사이트 액세스 압력을 줄입니다.
1. 프론트 엔드 디자인
주로 기능 구현을 테스트하기 위한 것이며 가장 간단한 디자인을 사용하여 참조하기 편리하고 향후 기능 확장에 도움이 됩니다. upload.html의 주요 코드는 아래 첨부되어 있습니다. 빨간색 상자 안의 코드에 특히 주의하세요. CSS 스타일은 비교적 간단합니다. 필요한 경우 아래 소스 코드를 참조할 수 있습니다.
2. 백엔드 컨트롤러 디자인
config.class.php 주요 코드는 다음과 같습니다. 설계된 테이블 "conf"에는 여기에 '태그', '값'이라는 두 개의 필드만 필요합니다. simple varchar type
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는
Upload.class .php에 있습니다. 경로를 인스턴스화할 때 문제가 없다면 사용자의 사용 습관에 따라 디렉터리를 조정할 수 있습니다.
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. Tips
이 참조 코드의 경우 관련 공개 메소드인 handlerImg()가 먼저 필요한 이미지를 업로드합니다. 현재 운영 중인 웹사이트의 루트 디렉터리에 업로드된 후 ftp_upload()를 통해 해당 이미지 FTP 서버로 이미지가 전송됩니다. 구현 단계 중 첫 번째 단계는 개발 과정에서 테스트 서버가 수행하기 때문에 중복됩니다. FTP 계정 요구 사항을 충족하지 못하는 경우에는 온라인 콘텐츠 수정 사항을 시기적절하게 업데이트해야 합니다.
추천 튜토리얼: "TP5"
위 내용은 Thinkphp에서 사진을 업로드하려면 ftp를 사용하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!