例、リモート画像クラスを取得するためのphp。
コード:
-
- if ( ! 定義('basepath')) exit('直接スクリプトアクセスは許可されていません');
- /*
- * イメージクラスへのリモートアクセス
- *
- * にはカール拡張機能が必要ですオンにする
- * PHP アップロード原理をシミュレートし、キャッシュ ディレクトリを作成し、リモートで取得したファイルをキャッシュ ディレクトリに保存します。
- */
- class url_pic{
- protected $cache; //キャッシュパス
-
- public function __construct($cache='')
- {
- if(!emptyempty($cache))
- {
- $this->cache = $cache;
- }
- else
- {
- $this->cache = 'uploads/cache/';
- }
- }
-
- // キャッシュディレクトリを設定する
- public function set_cache($cache='')
- {
- if (!emptyempty($cache))
- {
- $this->cache = $cache; }
- }
- /*
- * リモートイメージを取得し、ファイルをキャッシュフォルダーに保存します
- *
- * $url Getリモートファイル リンク
- * $error
- * @return 777 はフォルダーを作成できないことを返します
- * @return キャッシュに保存されているファイル名
- */
- public function get_file($url,$error=777)
- {
- $path = $this->build_folder($this->cache);
- if($path==false) return $error;
-
- $curl =curl_init()
- // 必要な URL を設定します。 roll
- curl_setopt($curl,curlopt_url, $url);
- // ヘッダーを設定します
- curl_setopt($curl,curlopt_header, 0); // 結果を文字列に保存するか画面に出力するかを尋ねるカールパラメータを設定します。
- curl_setopt($curl,curlopt_returntransfer, 1);
- //curl を実行し、Web ページをリクエストします
- $file =curl_exec($curl);
- // URL リクエストを閉じます
- curl_close($curl);ファイル 取得したデータ
- $filename = $this->cache.date("ymdhis");
- if(self::build_file($file, $filename)==false)
- {
- return false }
- return; $ filename;
- }
-
- // フォルダーを作成します
- public function build_folder($dir)
- {
- if (!is_dir($dir))
- {
- if (!mkdir($dir,0777,true) || ! chmod ($dir,0777))
- {
- return false;
- }
- }
- return true; }
-
- /*
- * PHP の move_uploaded_file メソッドをシミュレートするためにファイルを移動します
- *
- * $cache キャッシュ ファイル パス
- * $filename必須 生成されたファイル名の絶対パス
- *
- * @return $filename
- */
- public function move_file($cache,$filename)
- {
- $file = @file_get_contents($cache)
- if(self:: build_file( $file, $filename)==false)
- {
- return false; }
- unlink($cache); // キャッシュされた画像をクリアします
- return $filename }
-
- /*
- * ファイルを生成します
- * $ file required 書き込まれるファイルまたはバイナリストリーム
- * $newname は生成されるファイル名の絶対パスです
- */
- protected static function build_file($file,$filename)
- {
- $write = @fopen($ファイル名,"w") ;
- if($write==false)
- {
- return false;
- if(fwrite($write,$file)==false)
- {
- return false; fclose($write)= =false)
- {
- false を返す
- }
- true を返す }
- }
-
-
- コードをコピーします
-
-
-
-
-
-
-
-
-
|