画像アップロード機能は非常に一般的です。ここでは、関連情報をアップロードするのに便利なように、FTP 画像アップロード機能を整理するために ThinkPHP フレームワークの統合方法を参照します。バックグラウンド操作中、画像はオンライン画像サーバーに直接アップロードされ、大量のトラフィックによってアクセスされる画像の読み込み速度の低下を回避し、Web サイトへのアクセス圧力を軽減します。
1. フロントエンド設計
これは主に、最も単純な設計を使用して関数の実装をテストするためのもので、参照に便利で、後の関数に役立ちます。拡大。 Upload.html のメイン コードを以下に添付します。赤枠で囲まれたコードに特に注目してください。CSS スタイルは比較的単純です。必要に応じて、以下のソース コードを参照してください。
#2. バックグラウンド コントローラーの設計
config.class.php のメイン コードは次のとおりです。 "conf "ここで使用する必要があるのは 2 つのフィールド (「タグ」、「値」) のみです。単純な 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. ファイルのインポート
私のコードを例に挙げます。ここでは 2 つのファイルが引用されており、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(); } }
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(); }
7 , ヒント
このリファレンス コードでは、関連するパブリック メソッド handleImg() は、まずアップロードする画像を現在運営している Web サイトのルート ディレクトリに転送し、その後 ftp_upload() を通じて画像をアップロードします。対応する画像 FTP サーバーに転送する最初のステップは、実装手順の点で冗長です。主な理由は、開発プロセス中のテスト サーバーが FTP アカウント要件を満たしていないためです。同時に、オンライン コンテンツのタイムリーな更新を容易にする必要があります。修正。 推奨チュートリアル:「TP5」
以上がFTP を使用して thinkphp に写真をアップロードするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。