0

この関数を使用して、指定されたリンクで画像を作成すると、直接表示されません。更新後、画像が表示されます。

http://mysite.local/img/slide-image-321.jpg/369x360

画像へのリンクです

private function generate_cache($localpath, $from, $to, $width, $height) {
        $tempFrom = pathinfo($from);
        $tempTo = pathinfo($to);
        $tempPathFrom = $localpath.$tempFrom['basename'];
        $tempPathTo = $localpath.$tempTo['basename'];
        // Amazon S3
        $awsAccessKey =  Zend_Registry::getInstance()->config->amazons3->awsAccessKey;
        $awsSecretKey = Zend_Registry::getInstance()->config->amazons3->awsSecretKey;
        $bucketName = Zend_Registry::getInstance()->config->amazons3->bucketName;
        $s3 = new Zend_Service_Amazon_S3($awsAccessKey, $awsSecretKey);
        // ..
        if(file_get_contents('http://'.$bucketName.'.s3.amazonaws.com/'.$tempFrom['basename'])) {
            $content = file_get_contents('http://'.$bucketName.'.s3.amazonaws.com/'.$tempFrom['basename']);
        }

        if(!file_put_contents($tempPathFrom, $content)){
            echo "Failed to copy the file";
        }

        $resize = $this->_helper->imgResize($tempPathFrom);
        $resize->resizeImage($width, $height);
        $resize->saveImage($tempPathTo, 95);


            if(!$s3->putFile($tempPathTo, $bucketName."/".$tempTo["basename"])){
            echo "failed to put the resized image in s3";
        } else {
            // Deleting the local files
            unlink($tempPathTo);
            unlink($tempPathFrom);

            }

    }
4

2 に答える 2

0

最後のs3部分へのアップロードをここに移動したソリューションを見つけました。初めてローカルからロードし、s3にアップロードしてローカルを削除し、更新するか、2回目にs3からロードします

    if( file_exists($localpath.$tmp["basename"]) ) {
                readfile($localpath.$tmp["basename"]);
                self::upload_aws($localpath.$tmp["basename"], $bucketName."/".$tmp["basename"]);
            } elseif($s3->getObject($bucketName."/".$tmp["basename"])){
                echo $s3->getObject($bucketName."/".$tmp["basename"]);
    }



public function upload_aws(){
     if(!$s3->putFile($tempPathTo, $bucketName."/".$tempTo["basename"])){
                echo "failed to put the resized image in s3";
            } else {
                // Deleting the local files
                unlink($tempPathTo);
                unlink($tempPathFrom);

     }


}
于 2012-07-18T09:04:36.067 に答える
0

ページの読み込み時に、サーバーで画像が作成されないためです。実際には、更新前に作成され、更新後に表示される場合があります。

于 2012-07-17T12:54:54.517 に答える