【问题标题】:php image upload issue , video extensions does not return errorphp 图片上传问题,视频扩展不返回错误
【发布时间】:2011-12-04 08:21:52
【问题描述】:

php代码:

<?php

if (isset($_FILES['image'])) {
    $errors = array();
    $allowed_ext = array ('jpg','gif','png','jpeg');

    $file_name = $_FILES ['image']['name'];
    $file_ext = explode('.', $file_name);
    $file_ext = end ($file_ext);
    $file_ext = strtolower($file_ext);
    echo $file_ext;
    $file_size = $_FILES ['image']['size'];
    $file_tmp = $_FILES ['image']['tmp_name'];

    if (!in_array($file_ext, $allowed_ext)) {
        $errors[] = "File extension is not allowed.";
    }

    if ($file_size > 2097152 ) {
        $errors[] = "File size is greater than 2 megabytes.";
    }

    if (count($errors) > 0) {
        foreach ($errors AS $error) {
            echo $error . "<br />";
        }
    } else {
        $file_name = md5(microtime()).".".$file_ext;
        if (move_uploaded_file($file_tmp, $avatar_folder.$file_name)) {
        }
    }
}

?>

html代码:

<div id="form_part">
<form action="" method="POST" enctype="multipart/form-data">
    <p>
        <input type="FILE" name="image">
        <input type="submit" value="upload">
    </p>

</form>
</div> <!-- end form_part -->

现在,问题是如您所见,我在数组中指定图像文件类型以允许上传特定扩展名并阻止其他扩展名,如果此数组中不存在文件类型但当我测试时返回错误消息对于视频文件,文件未上传到上传目录,但错误消息未显示,虽然在我上传 txt、rar、pdf 等时显示它......,为什么会这样,我该如何解决?

【问题讨论】:

标签: php html image upload


【解决方案1】:

试试这个代码

$allowed_exts = array('.png','.gif','.jpg','.jpeg') ; // Our Allowed Extentions

$errors       = array() ;                             // Our Error Array

$file_name    =  $_FILES['image']['name'] ;           
$file_size    =  $_FILES['image']['size'] ;

$file_ext     = strtolower(strrchr($file_name,'.')); // File Extention

if(!in_array($file_ext,$allowed_exts))
        {
          array_push($errors,'NoT Allowed');
        }
elseif($file_size > 2097152)
        {
          array_push($errors,'More Than 2 mb');
        }



if(count($errors) > 0)
        {
          var_dump($errors) ;
        }
else
        {

          $new_name      = substr(md5(rand().time()),0,8).$file_ext ;

          $upload        = move_uploaded_file($_FILES['image']['tmp_name'],$avatar_folder.$new_name )  ;


          if($upload)
                         {
                           echo 'Image Uploaded ';
                         }
          else
                         {
                           var_dump($errors) ;
                         }


        }

【讨论】:

  • 没用,我只是替换了 $file_ext 部分,但它不起作用,当我尝试上传任何图像文件时,我的文件扩展名不允许!
  • 哦,对不起,它现在正在工作,我忘了添加'。'在数组元素中,但同样的问题仍然存在!例如,当我尝试上传 .avi 文件时,它没有上传,但没有显示错误消息!
【解决方案2】:

编写 test.php 并放置此代码:

phpinfo();

此代码将打印服务器配置页面。查找“upload_max_filesize”值。它告诉我们可以上传多大的文件。

如果这个值太小,大多数托管公司都允许使用以下行在 .htaccess 文件中更改它:

php_value upload_max_filesize 50M

顺便说一句,您的代码不会检查错误。在顶部,您需要添加行:

if ($_FILES['image']['error'] == UPLOAD_ERR_OK) {
   //do your code
} else {
   echo $_FILES['audio']['error'];
   //Error messages explained here: http://php.net/manual/en/features.file-upload.errors.php
}

【讨论】:

  • 我正在检查文件大小和文件类型错误,上面的这一行是什么?
  • 那么错误代码是什么?这条线的结果是什么?回声 $_FILES['audio']['error'];
猜你喜欢
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多