【问题标题】:PHP multiple file upload script not workingPHP多文件上传脚本不起作用
【发布时间】:2012-09-24 11:02:31
【问题描述】:

这是用于多次上传的 html 标记..我想对其执行验证.. 1)检查文件是否为 5 mb 2)检查它是否是jpg,gif只有图像文件

<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="file[]" multiple="multiple">
<input type="submit" value="upload">
</form>

这里是php代码

if(!empty($_FILES['file'])){        
    foreach($_FILES['file']['name'] as $key => $name)
    {           
                 if($_FILES['file']['error'][$key] == 0 && move_uploaded_file($_FILES['file']['tmp_name'][$key], "images/{$name}")){

            $uploaded[] = $name;
                 }
    }       
    print_r($uploaded);     
}

现在它只是在没有任何验证的情况下上传文件......我无法弄清楚要检查大小并检查它是否只有图像类型......请 php 专家帮助我

当我尝试使用它时,它会直接上传

  if($_FILES['file']['size'][$key] > 5000){
                     echo 'file must be under 5 mb';
                   }else{
                     move_uploaded_file($_FILES['file']['tmp_name'][$key], "images/{$name}")

}

【问题讨论】:

  • 提示:在 $_FILES 上使用 print_r() 或 var_dump() 以了解其包含的更多内容。
  • @..... 什么是好主意?上传所有有效文件,最后抛出无效文件错误或找到一个无效文件时直接抛出错误?
  • 使用 xDebug 调试您的应用程序

标签: php file-upload


【解决方案1】:
foreach(...) {
   $fileType = explode(".", $name);
   $fileType = strtolower("." . $fileType[count($fileType)-1]);

   if(!in_array($fileType, array('.gif','.jpg','.jpeg')))
       echo 'Incorrect file type';
   if($_FILES['file']['size'][$key] > 5000)
       echo 'Maximum alowed size is 5MB';

}

【讨论】:

  • 如果图片扩展名是大写的怎么办?喜欢JPG?
  • 这就是strtolower() 正在做的事情..它将字母从大写转换为小写..
  • 工作正常 :D thnx :D ...但问题是如果我上传更大的文件,它不会显示允许的最大文件错误:(
【解决方案2】:

您可以使用:http://us2.php.net/manual/en/function.exif-imagetype.php 来检查图像的类型

大小可以在 $_FILES 数组中找到(小于大小),例如$_FILES['file']['size'][$key]

【讨论】:

    【解决方案3】:

    这是上传文件,因为您在此编写了上传代码

    if($_FILES['file']['error'][$key] == 0 && move_uploaded_file($_FILES['file']['tmp_name'][$key], "images/{$name}"))
    

    【讨论】:

    • 是的,但实际上我希望脚本执行验证
    • 您要对图像进行哪些验证??
    • 验证@Matai Mihai 已回答。它对你有用吗??
    • 不,当我尝试用它上传时它不起作用,它显示允许的最大文件大小为 5 mb,但使用 1mb 文件...
    • 5000 更改为5000000。实际上5000 是5kb,因为它显示max file size allowed is 5 mb..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多