Использование Zend_File_Transfer для загрузки - PullRequest
0 голосов
/ 22 июня 2009

Я довольно интенсивно использую Zend Framework для разработки своего веб-сайта, и сейчас я разрабатываю интерфейс загрузки. Мне нужно разрешить пользователю загружать 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, но я перемещаю его в базу данных, а не в файл.

Спасибо.

1 Ответ

2 голосов
/ 22 июня 2009
  1. Вы можете использовать getimagesize() для проверьте, что файл действительно и образ. (не обманывайте его имя - оно может дать вам гораздо больше информации, чем просто размер)
  2. Используйте file_get_contents(), чтобы прочитать содержимое файла изображения для хранения в базе данных.
...