我想实现的就是一个简单的php文件上传,我把php.ini针对的各项配置好了,最后要上传的文件所在目录upload也设置777权限了,可还是提示文件无效“Invalid file”前台:
前台:
<html>
   <head>
     <title>
         upload_test
        </title>
    </head>
    <body>
     <form action="upload_file.php" method="post" enctype="multipart/form-data">
         <label for="file">Filename:</label>
            <input type="file" name="file" id="file"/>
            <br/>
            <input type="submit" name="submit" value="Submit"/>
        </form>
    </body>
</html>
 
后台:
<?php
    if ( (($_FILES["file"]["type"] == "image/gif")||($_FILES["file"]["type"] == "image/jpeg")||($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] <20000) ){
            if ($_FILES["file"]["error"] > 0){
                echo "Return Code: ".$_FILES["file"]["error"]."<br/>";
                }else{
                    echo "Upload: ".$_FILES["file"]["name"]."<br/>";
                    echo "Type: ".$_FILES["file"]["type"]."<br/>";
                    echo "Size: ".($_FILES["file"]["size"]/1024)."<br/>";
                    echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br/>";
                    
                    if (file_exists("upload/".$_FILES["file"]["name"])){
                        echo $_FILES["file"]["name"]."already exists.";
                        }else{
                            move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
                            echo "Stored in : "."upload/".$_FILES["file"]["name"];
                            }
                    }
        }else{
            echo "Invalid file";
            }
?>

解决方案 »

  1.   

    if ( (($_FILES["file"]["type"] == "image/gif")||($_FILES["file"]["type"] == "image/jpeg")||($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] <20000) ){这里你输出你要判断的值。
      

  2.   


    不好意思,刚接触php,见笑了,能解释得详细点嘛,是不是我上传的文件的名称有要求还是,这个代码不是我自己写的,我是从w3school copy过来的,谢谢 !
      

  3.   

    其实我本意是只想能上传一个txt文本就可以,或者说不需要去定义可以上传什么文件都行,,,
      

  4.   

    你上传的是图片吗
    echo你的$_FILES["file"]["type"]
      

  5.   

    你的问题 是出现在 
    $_FILES["file"]["size"] <20000 是判断不出 你上传文件的大小  $_FILES["file"]["type"] 是判断文件类型
      

  6.   

    没整明白限制上传类型的代码,我就直接把判断都去掉了,改成下面了,任何文件都可以上传,只要大小不超过 <?php
                if ($_FILES["file"]["error"] > 0){
                    echo "Return Code: ".$_FILES["file"]["error"]."<br/>";
                    }else{
                        echo "Upload: ".$_FILES["file"]["name"]."<br/>";
                        echo "Type: ".$_FILES["file"]["type"]."<br/>";
                        echo "Size: ".($_FILES["file"]["size"]/1024)."<br/>";
                        echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br/>";
                        
                        if (file_exists("upload/".$_FILES["file"]["name"])){
                            echo $_FILES["file"]["name"]."already exists.";
                            }else{
                                move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
                                echo "Stored in : "."upload/".$_FILES["file"]["name"];
                                }
                        }
    ?>
      

  7.   

    你只需要把 $_FILES["file"]["size"] <20000 调大一点 在上传一个图片 小点的试一下 还有一点 你的判断是 判断图片 而不是文件 所以你上传txt文件的时候 直接else!
      

  8.   

    你只要 var_dump($_FILES) 把传递过去的值全部dump出来 就知道哪些是哪些 这样好理解!
      

  9.   


    解决了,是size的值太小,晕倒,这php默认的值是多少啊,不是字节吗?
      

  10.   

    默认是2M的 但是 你要了解  file 的szie 是以字节为标准的!!!
      

  11.   

    最近我们也遇到一个上传的问题。
    不过我们上传的是视频,这样的话,由于我们在php.ini里面没有设置好上传限制的大小,而是使用了默认的2M和8M,所以导致一直上传失败,所以你可以找找这样的原因。
      

  12.   

    一般这样的情况是你的配置问题,所以你最好检查一下PHP的配置文件
      

  13.   

    感谢各位的帮助,涉及多方面,php.ini的size大小、后台判断中给的值大小和文件类型判断,upload目录的权限都要注意