我正在尝试将<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不会改变任何内容
谢谢你的时间,