Angular,MYSQL,PHP Store Image

时间:2014-02-20 17:39:58

标签: php mysql angularjs

我正在尝试将<input type='file'>中的图像存储到Mysql中。

我们可以开始讨论将二进制数据存储在数据库中或只是文件的路径,但我选择这种方式是因为它会使备份更容易:)

到目前为止,这是我的代码:

控制器:

JourneyFactory.StoreJourney(this.journey)
            .success(function(data){
                journeyStatus = data;
            });

厂:

        StoreJourney: function(journey){
        var params = {
            action : 'store',
            journey: journey
        };

        return $http({
            url    : '../server/journey.php',
            method : 'GET',
            params : params
        });

journey.php:

//omitted not relevant code

 private function Store($journey){

    date_default_timezone_set('UTC');

    $journey->PriceValid = date('Y-m-d', strtotime($journey->PriceValid));

    if($this->database->Insert("INSERT INTO journey (ID, Name, Code, Country, Price, PriceValid, Thumb, Image, Description) VALUES (:ID, :Name, :Code, :Country, :Price, :PriceValid, :Thumb, :Image, :Description)", $journey)){
        echo json_encode(array("success" => true));
    }else{
        echo json_encode(array("success" => false));
    }
}

database.php中:

public function Insert($query, $params){
    $connection = $this->OpenConnection();
    $query      = $connection->prepare($query);

    try{

        foreach($params as $key => $value){
            if($key == 'Image' || $key == 'Thumb'){
                $query->bindValue(':'.$key, $value, PDO::PARAM_LOB);
            }else{
                $query->bindValue(':'.$key, $value);
            }
        };

        $query->execute();

        return true;

    }catch (PDOException $ex){
        echo 'Query failed: ' . $ex->getMessage();
    }finally{
        $this->CloseConnection($connection);
    }

    return false;
}

除了2个图像之外,它会插入数据库中应该存在的每个值...只存储一小部分:

433A5C66616B65706174685C646F776E6C6F61642E706E67

(两个图像都是一样的,即使它是2个不同的文件)标题可能是??

知道如何让这个工作吗?

修改

MySQL的:

列数据类型:MEDIUMBLOB

更改为POST不会改变任何内容

谢谢你的时间,

0 个答案:

没有答案