簡體   English   中英

GAE PHP提供雲存儲中的圖像

[英]Gae php serve images from cloud storage

我正在應用引擎應用程序中使用php開發應用程序。 這個程序是一個圖片庫。 我將圖像保存到雲存儲中,並且希望以一種動態方式檢索它們。 通常,我從我的應用程序將照片上傳到雲存儲中,但我想將其取回。 在我的本地主機中,我將我的映像名稱保存到數據庫,並與本地主機中的文件連接(典型方式)。

如何使用雲存儲執行類似的操作?如何解決此問題?

謝謝!

我用這個教程對用戶上傳到雲存儲和這一個服務於圖像。 他們工作了,照片在雲端。 現在我想創建對雲存儲的查詢以檢索它們,例如按ID,按名稱,全部,對其進行排序以及更多並將其關聯

這是我在本地主機的照片類。

class Photo extends Db_object {


    protected static $db_table = "photos";
    protected static $db_table_fields = array('id', 'title','caption', 'description','filename', 'alternate_text','type','size' );
    public $id;
    public $title;
    public $caption;
    public $description;
    public $alternate_text;
    public $filename;
    public $type;
    public $size;

    public $tmp_path;
    public $upload_directory = "images";
    public $errors = array();
    public $upload_errors_array = array(

    UPLOAD_ERR_OK           => "There is no error",
    UPLOAD_ERR_INI_SIZE     => "The uploaded file exceeds the upload_max_filesize directive in php.ini",
    UPLOAD_ERR_FORM_SIZE    => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
    UPLOAD_ERR_PARTIAL      => "The uploaded file was only partially uploaded.",
    UPLOAD_ERR_NO_FILE      => "No file was uploaded.",               
    UPLOAD_ERR_NO_TMP_DIR   => "Missing a temporary folder.",
    UPLOAD_ERR_CANT_WRITE   => "Failed to write file to disk.",
    UPLOAD_ERR_EXTENSION    => "A PHP extension stopped the file upload."                   


);


// This is passing $_FILES['uploaded_file'] as an argument

    public function set_file($file) { 

        if(empty($file) || !$file || !is_array($file)) {
        $this->errors[] = "There was no file uploaded here";
        return false;

        }elseif($file['error'] !=0) {

        $this->errors[] = $this->upload_errors_array[$file['error']];
        return false;

        } else {


        $this->filename =  basename($file['name']);
        $this->tmp_path = $file['tmp_name'];
        $this->type     = $file['type'];
        $this->size     = $file['size'];

        }


}


    public function picture_path() {

        return $this->upload_directory.DS.$this->filename;
    }

    public function save() {

        if($this->id) {
            $this->update();

        } else {
            if(!empty($this->errors)) {
                return false;

            }

            if(empty($this->filename) || empty($this->tmp_path)){
                $this->errors[] = "the file was not available";
                return false;
            }

            $target_path = SITE_ROOT . DS . 'admin' . DS . $this->upload_directory . DS . $this->filename;


            if(file_exists($target_path)) {
                $this->errors[] = "The file {$this->filename} already exists";
                return false;


            }

            if(move_uploaded_file($this->tmp_path, $target_path)) {

                if( $this->create()) {

                    unset($this->tmp_path);
                    return true;

                }


            } else {

                $this->errors[] = "the file directory probably does not have permission";
                return false;

            }

        }

    }

    public function delete_photo() {

        if($this->delete()) {

            $target_path = SITE_ROOT.DS. 'admin' . DS . $this->picture_path();

            return unlink($target_path) ? true : false;


        } else {

            return false;


        }

    }

        public function comments() {

        return Comment::find_the_comments($this->id);

    }


    public static function display_sidebar_data($photo_id) {


        $photo = Photo::find_by_id($photo_id);


        $output = "<a class='thumbnail' href='#'><img width='100' src='{$photo->picture_path()}' ></a> ";
        $output .= "<p>{$photo->filename}</p>";
        $output .= "<p>{$photo->type}</p>";
        $output .= "<p>{$photo->size}</p>";

        echo $output;


    }


} // End of Class 

 ?>

我的Db_object類在我的本地主機中,我使用它們以及正在搜索的類似內容!

<?php 

class Db_object {


public $errors = array();
public $upload_errors_array = array(


    UPLOAD_ERR_OK           => "There is no error",
    UPLOAD_ERR_INI_SIZE     => "The uploaded file exceeds the upload_max_filesize directive in php.ini",
    UPLOAD_ERR_FORM_SIZE    => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form",
    UPLOAD_ERR_PARTIAL      => "The uploaded file was only partially uploaded.",
    UPLOAD_ERR_NO_FILE      => "No file was uploaded.",               
    UPLOAD_ERR_NO_TMP_DIR   => "Missing a temporary folder.",
    UPLOAD_ERR_CANT_WRITE   => "Failed to write file to disk.",
    UPLOAD_ERR_EXTENSION    => "A PHP extension stopped the file upload."                   


);

    public function set_file($file) { 

        if(empty($file) || !$file || !is_array($file)) {
        $this->errors[] = "There was no file uploaded here";
        return false;

        }elseif($file['error'] !=0) {

        $this->errors[] = $this->upload_errors_array[$file['error']];
        return false;

        } else {


        $this->user_image =  basename($file['name']);
        $this->tmp_path = $file['tmp_name'];
        $this->type     = $file['type'];
        $this->size     = $file['size'];


        }

}

    public static function find_all() {

        return static::find_by_query("SELECT * FROM " . static::$db_table . " ");


        }


    public static function find_by_id($id) {
        global $database;
        $the_result_array = static::find_by_query("SELECT * FROM " . static::$db_table . " WHERE id = $id LIMIT 1");

        return !empty($the_result_array) ? array_shift($the_result_array) : false;


        }

    public static function find_by_query($sql) {
        global $database;
        $result_set = $database->query($sql);
        $the_object_array = array();
        while($row = mysqli_fetch_array($result_set)) {

        $the_object_array[] = static::instantation($row);

        }

        return $the_object_array;

        }


    public static function instantation($the_record){

        $calling_class = get_called_class();


        $the_object = new $calling_class;


        foreach ($the_record as $the_attribute => $value) {

        if($the_object->has_the_attribute($the_attribute)) {

            $the_object->$the_attribute = $value;


            }


        }

        return $the_object;
    } 


    private function has_the_attribute($the_attribute) {

        // $object_properties = get_object_vars($this);

        // return array_key_exists($the_attribute, $object_properties);

        return property_exists($this, $the_attribute);


    }

    protected function properties() {

        $properties = array();

        foreach (static::$db_table_fields  as $db_field) {

            if(property_exists($this, $db_field)) {

                $properties[$db_field] = $this->$db_field;

            }

        }

        return $properties;

    }

        protected function clean_properties() {
        global $database;


        $clean_properties = array();


        foreach ($this->properties() as $key => $value) {

            $clean_properties[$key] = $database->escape_string($value);


        }

        return $clean_properties ;

    }

public function save() {

    return isset($this->id) ? $this->update() : $this->create();

    }

    public function create() {
        global $database;

        $properties = $this->clean_properties();

        $sql = "INSERT INTO " . static::$db_table . "(" . implode(",", array_keys($properties)) . ")";
        $sql .= "VALUES ('". implode("','", array_values($properties)) ."')";


        if($database->query($sql)) {

            $this->id = $database->the_insert_id();

            return true;

        } else {

            return false;


        }


    } // Create Method



    public function update() {
        global $database;


        $properties = $this->clean_properties();

        $properties_pairs = array();

        foreach ($properties as $key => $value) {
            $properties_pairs[] = "{$key}='{$value}'";
        }

        $sql = "UPDATE  " .static::$db_table . "  SET ";
        $sql .= implode(", ", $properties_pairs);
        $sql .= " WHERE id= " . $database->escape_string($this->id);

        $database->query($sql);

        return (mysqli_affected_rows($database->connection) == 1) ? true : false;



    } // end of the update method




        public function delete() { 
            global $database;


            $sql = "DELETE FROM  " .static::$db_table . "  ";
            $sql .= "WHERE id=" . $database->escape_string($this->id);
            $sql .= " LIMIT 1";

            $database->query($sql);

            return (mysqli_affected_rows($database->connection) == 1) ? true : false;


        }


        public static function count_all() {

            global $database;

            $sql = "SELECT COUNT(*) FROM " . static::$db_table;
            $result_set = $database->query($sql);
            $row = mysqli_fetch_array($result_set);

            return array_shift($row);


        }


        public function delete_photo() {


        if($this->delete()) {

            $target_path = SITE_ROOT.DS. 'admin' . DS . $this->picture_path();

            return unlink($target_path) ? true : false;


        } else {

            return false;


        }




    }


}

似乎您需要遵循本指南,並且需要執行SQL查詢以獲取存放在該處的數據。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM