php照片上传器

时间:2011-04-16 11:19:08

标签: php photo uploader

我有一个非常简单的照片上传器,需要一些提升速度

首先,当页面加载时,即使框中没有任何内容,也会出现回声?

if($_POST['upload']) {
     if($_FILES['image']['name'] == "")
     {
         #there's no file name return an error
         echo "\n<b>Please select a file to upload!\n</b>";
         exit;
     }
     #we have a filename, continue
}

#directory to upload to
$uploads = '/home/habbonow/public_html/other/quacked/photos';
$usruploads = 'photos';

#allowed file types
$type_array = array('image/gif','image/pjpeg','image/x-png');

if(!in_array($_FILES['image']['type'], $type_array))
{
    #the type of the file is not in the list we want to allow
    echo "\n<b>That file type is not allowed!\n</b>";
    exit;
}

页面输出显示上传框,但也回显“不允许使用该文件类型!”即使我没有点击按钮。

其次,jpg的mime类型是什么,因为我有jpeg和pjpeg。

谢谢,感谢任何帮助。


2 个答案:

答案 0 :(得分:1)

我还建议将所有内容放在POST块中,否则无论何时加载页面都会对其进行评估。

对于mimetypes,有一个方法image_type_to_mime_type,它允许你传入一个表示给定文件类型的常量,并为它返回正确的mimetype,例如:

$type_array = array(image_type_to_mime_type(), image_type_to_mime_type(IMAGETYPE_GIF), image_type_to_mime_type(IMAGETYPE_PNG), 'image/pjpeg');

(因为pjpeg没有它自己的常量,我们可以手动添加它)

答案 1 :(得分:0)

如果您还没有提交表单,我认为!inarray调用很可能会返回false,因为$ _FILES ['images']不存在。

为此,我很想将所有内容放在第一个if语句中:

if($_POST['upload']) {
     if($_FILES['image']['name'] == "")
     {
         #there's no file name return an error
         echo "\n<b>Please select a file to upload!\n</b>";
         exit;
     }
     #we have a filename, continue


     #directory to upload to
     $uploads = '/home/habbonow/public_html/other/quacked/photos';
     $usruploads = 'photos';

     #allowed file types
     $type_array = array('image/gif','image/pjpeg','image/x-png');

     if(!in_array($_FILES['image']['type'], $type_array))
     {
         #the type of the file is not in the list we want to allow
         echo "\n<b>That file type is not allowed!\n</b>";
         exit;
     }
}