如何在ZendFramework中将图像作为blob插入到Db中

时间:2009-08-04 13:01:13

标签: php zend-framework

我想以blob格式向db插入图像。 如何在zend框架中编写程序。 一个简单的形式 只需选择一个图像并插入数据库。

3 个答案:

答案 0 :(得分:2)

使用file_get_contents将其作为字符串读取并存储。

也就是说,将实际图像数据存储在数据库中很少是个好主意。最好生成一个唯一的文件名,然后将其存储在DB中。

答案 1 :(得分:2)

在Zend表单中创建一个文件元素:

$element = new Zend_Form_Element_File('fileElement');

然后您可以将上传的图像以BLOB格式插入数据库,如下所示:

$conn = new PDO("mysql:host='host';dbname='database'", 'userName', 'password'); 

$imagePath = $zendForm->fileElement->getFileName(); 
$image = file_get_contents('$imagePath'); 

$sql = "INSERT INTO images (data) values(?)"; 

$q = $conn->prepare($sql); 
$q->bindParam(1, $image, PDO::PARAM_LOB); 
$q->execute(); 

答案 2 :(得分:0)

以下是一些将文件保存在zend中的代码:

// This is to save in saveAction()
$source = $this->view->form->upload->getFileName();
$fp = fopen($source,'r');
$content =   fread($fp,filesize($source));   
// I don't use addslashes, because i already have that in my mapper

fclose($fp); 

$model->image       = base64_encode($content);
// Save here


// This is to read in imagesAction()
$this->_helper->Layout()->disableLayout();
$this->_helper->ViewRenderer->setNeverRender();

header('Content-Type: image/gif');
echo base64_decode($image);     
exit;

我有很多问题,尝试进行保存工作,不要直接将其插入数据库来测试读数。除非你知道正确的数据库编码(我不知道),否则这将无法实现。