【问题标题】:Using Zend_File_Transfer to upload使用 Zend_File_Transfer 上传
【发布时间】:2009-06-22 12:28:50
【问题描述】:

我一直在大量使用 Zend 框架来开发我的网站,现在我正在设计上传界面。 我需要允许用户上传 1-5 张图片。 我需要将这些图像作为 BLOB 对象发送到数据库。 我当前的代码是这样的:

$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 方法,但我将它移动到数据库,而不是文件。

谢谢。

【问题讨论】:

    标签: php zend-framework upload


    【解决方案1】:
    1. 您可以使用getimagesize() 检查文件是否真实,并且 图片。 (不要被它的名字所迷惑 - 它可以为您提供比尺寸更多的信息)
    2. 使用file_get_contents()读入图片文件内容,存入数据库。

    【讨论】:

    • ImageSize 验证器可能会调用 getimagesize() 以便涵盖 :) 我同意 karim,但它应该足够安全
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多