2009-06-22 23 views
0

我一直在使用Zend框架,而集中發展自己的網站,現在我設計的上傳界面。 我需要允許用戶上傳1-5張圖片。 我需要將這些圖像作爲BLOB對象發送到數據庫。 我當前的代碼是這樣的:使用Zend_File_Transfer上傳

$upload = new Zend_File_Transfer_Adapter_Http(); 
$upload->addValidator('Extension', true, 'jpg,png,gif'); 
$upload->addValidator('ImageSize', true, array(
     'minwidth' => 4)); //i preform this check to make sure that it's a real 
          //image, since IsImage only checks MIME. Good Idea? 
$upload->addValidator('IsImage', false); 
$upload->addValidator('Size', true, array(
     'min' => '5kB' , 
     'max' => '1MB' , 
     'bytestring' => false)); 
if (! $upload->receive()) { 
    $messages = $upload->getMessages(); 
    echo implode("\n", $messages); 

我有兩個問題。

首先,什麼是要確認上傳文件實際上是一個形象良好,快速,安全的方法是什麼? MIME類型和擴展可能很容易被僞造。我所做的事似乎很愚蠢。任何其他想法?

其次,我在哪裏從這裏出發?我知道Zend的有setDestination方法,但我將它移動到數據庫,而不是一個文件。

謝謝。

回答

2
  1. 您可以使用getimagesize()到 檢查該文件是真正和 圖像。 (不要被它的名字所迷惑 - 它可以給你的不僅僅是規模更加資訊)
  2. 使用file_get_contents()在圖像文件的內容來讀取存儲在數據庫中。
+0

的IMAGESIZE驗證可能調用和getimagesize(),所以這覆蓋:)我同意卡里姆不過,它應該是足夠安全 – 2009-06-22 18:51:18