2009-06-22 63 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