2011年03月30日

外部サーバー、リモートファイルの画像を保存、コピー

お願いします♪いいねとかつぶやいたりして下さい
 
で、指定した画像を保存するには
/*
    ファイル名を取得。
    拡張子判別をつけて返す
*/

function _getTmpFileName($img_path)
{
    $path = getImageSize($img_path);
    
    $res = false;
    if(preg_match('/jpeg/',$path['mime'])){
        $res = time().'.jpg';
    } elseif(preg_match('/png/',$path['mime'])) {
        $res = time().'.png';
    } elseif(preg_match('/gif/',$path['mime'])){
        $res = time().'.gif';	
    }
    
    return $res;
}


/*
    外部画像を一枚のみ保存
*/
function saveImage($img_path)
{
    $img_binary = file_get_contents($img_path);//画像を取得 
    $tmp_file = $this->_getTmpFileName($img_path);
    file_put_contents(TMP.$tmp_file,$img_binary);//保存。 hoge.jpg などの画像ファイル名まで含めて保存
    
    $this->data = array(
        'User' => array(
            'id' => 0
        ),
        'Attachment' => array(
            0 => array(
                'file' => TMP.$tmp_file,
                'model' => 'User',
                'alternative' => 'User'
            )
        ),
    );
    
    if($this->saveAll($this->data, array('validate' => 'first'))) {  
        //echo 'ok';
    } else {
        //echo 'ng';	
    }
    
    unlink(TMP.$tmp_file);
    
}




以上。




こんな感じで拡張子を判別して登録かけるのもいいかもね。
で、file_put_contents するときは 必ず画像ファイル名まで含めて保存をかける。
じゃないとエラーになる。

function _getTmpFileName($img_path)
{
    $path = getImageSize($img_path);
    
    $res = false;
    if(preg_match('/jpeg/',$path['mime'])){
        $res = time().'.jpg';
    } elseif(preg_match('/png/',$path['mime'])) {
        $res = time().'.png';
    } elseif(preg_match('/gif/',$path['mime'])){
        $res = time().'.gif';	
    }
    
    return $res;
}


/*
    外部画像を一枚のみ保存
*/
function saveImage($img_path)
{
    $img_binary = file_get_contents($img_path);//画像を取得 
    $tmp_file = $this->_getTmpFileName($img_path);
    file_put_contents(TMP.$tmp_file,$img_binary);//保存。 hoge.jpg などの画像ファイル名まで含めて保存
}


/*
    指定したファイルを指定した名前で保存
    @params $img_path 取得したい画像のパス
    @params $fullpath 保存したいパス(ファイル名を含む)
*/
function saveImage($img_path,$fullpath)
{
    $img = file_get_contents($img_path) ;//画像を取得
    file_put_contents($fullpath, $img);//保存。
}


これでいけます。

.htaccess で保存フォルダを見れないようにしていると、表示されなくて、ファイル壊れてるんじゃないかと間違えるので注意。
関連するタグ: PHP
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ