2009-08-04 20 views
3

blob形式の画像をdbに挿入したいと思います。 zendフレームワークでプログラムを書く方法。 単純な形式 イメージを1つ選択してdbに挿入するだけです。ZendFrameworkのBlobとして画像をDbに挿入する方法

+0

イメージをディスクに保存し、イメージのURLをDBに保存する方が一般にはるかに良いと認識していますか? – JasonDavis

+0

誰かがそれを保存した後にそれを「出る」方法について話すことで助けてもらえますか? –

答えて

2

あなたのZendのフォームは、ファイル要素を作成するには:

$element = new Zend_Form_Element_File('fileElement'); 

その後、あなたは、このようなBLOB形式でDBにアップロードした画像を挿入することができます。ここでは

$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(); 
+0

すみません、私はZendモデルクラスと$ tablename = new Zend_model_Photo()を使用しています。 $ tablename-> save(); この方法ではデータを保存しています... "$ sql =" INSERT INTOイメージ(データ)値(?) "; – coderex

2

file_get_contentsを使用して文字列として読み込んでください。

しかし、実際の画像データをデータベースに保存することはあまりお勧めできません。一意のファイル名を生成し、代わりにDBに格納する方が良い方法です。

+0

合意したように、DBのBLOBはしばしば遅くなり、DBの膨張に寄与する。 –

+0

Zendフレームワークを介してdbにBLOBを挿入する際に、追加の関数やメソッドがありますか?または単純なModelクラス構造ですか?私はブロブのフィールドを挿入することができません残りの残りのフィールドが挿入されますが、ブログだけでプロブラムがあります – coderex

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; 

私はそれに問題がたくさんありました。保存作業を行います。データベースに直接読み込んでテストをテストします。正しいdbエンコーディングがわからない限り、これは可能になりません(私はそうではありません)。

関連する問題