我想以blob格式向db插入图像。 如何在zend框架中编写程序。 一个简单的形式 只需选择一个图像并插入数据库。
答案 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;
我有很多问题,尝试进行保存工作,不要直接将其插入数据库来测试读数。除非你知道正确的数据库编码(我不知道),否则这将无法实现。