如何处理网页中的文件上传

时间:2016-02-07 18:30:52

标签: php html

我正在尝试编写一个.php来处理网站上的文件上传。我已经尝试了很多次,但文件不会上传到目录。

起初,我认为这可能是一个权限问题,但我已将模式更改为drwx-rwx-rwx,这应该意味着每个人都有此目录的权限。

我甚至尝试了教程网站(http://www.tutorialspoint.com/php/php_file_uploading.htm)上的示例,但仍然没有结果。

执行时,程序通过显示输出消息“Array([0] =>扩展名不允许,请选择JPEG或PNG文件。”)来响应非jpeg / png文件。当发送png文件时,它显示“成功”但文件大小为0,而在教程网站上,刺激会给出正确的文件大小输出。

我的目录树是:

/project --
    FileUpload.php
    /images

有谁知道问题是什么?

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));

      $expensions= array("jpeg","jpg","png");

      if(in_array($file_ext,$expensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }

      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }

      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>

      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>

         <ul>
            <li>Sent file: <?php echo $_FILES['image']['name'];  ?>
            <li>File size: <?php echo $_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>

      </form>

   </body>
</html>

1 个答案:

答案 0 :(得分:0)

测试你的代码,代码很好。但问题是,在上传文件的大小超过php.ini文件中定义的文件时,它不会有任何内容,也不会上传文件。

我通过上传文件大小小于php.ini文件中定义的大小(我已经定义了2M)来测试你的代码,它上传成功。然后我尝试上传文件大小超过2M的文件,但是它既没有显示错误也没有上传文件。

所以,我只是将upload_max_filesize更改为8M并尝试上传,如果文件大小小于2M,则工作也会出错。