0

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

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

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。

谢谢,任何帮助表示赞赏。


4

2 回答 2

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 没有它自己的常量,我们可以手动添加它)

于 2011-04-16T11:38:04.853 回答
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;
     }
}
于 2011-04-16T11:32:06.053 回答