以下是上传图片的代码,在本地运行是正常的,但在租回来的免费空间上运行出现了"文件格式不符"提示,并终止运行。请问是哪里出错了,应该怎样改?header ('Content-type: text/html; charset=utf-8');
$countNum=count($_POST['Comment']);//出现多少次$countNumt就值就等于多少
for($i=0; $i<$countNum; $i++){ //1
if($_FILES['Photo']['name'][$i] != ""){ //2
//echo "文件名称:" .$_FILES['Photo']['name'][$i]."<br>";
if($_FILES['Photo']['error'][$i] > 0){//这几行是上传文件时显示的错误信息
echo "文件:" .$_FILES['Photo']['name'][$i]."<br>";
switch($_FILES['Photo']['error'][$i]){
case 1 : die("文件大小超出 php.ini:upload_max_filesize 限制");
case 2 : die("文件大小超 MAX_FILE_SIZE 限制");
case 3 : die("文件仅被部分上传");
case 4 : die("文件未被上传");
}
}

$destDir = "../photos";//如果已上传,则指定文件夹名字为Photo
if(!is_dir($destDir) || !is_writeable($destDir))//判断文件夹$destDit目录不存在或无法写入,两竖||是或的意思,叹号是反向(TRUE就是FALES
die("目录不存在或无法写入");//终止并输出信息
//判断文件格式
$checkExt = getimagesize($_FILES['Photo']['tmp_name'][$i]);
if($checkExt[2] == NULL)
die("文件格式不符");

//指定扩展名
switch($checkExt[2]){
case 1 : $Ext = "gif";break;
case 2 : $Ext = "jpg";break;
case 3 : $Ext = "png";break;
}
//文件命名
$Name = date("Ymd") . "_"
. substr(md5(uniqid(rand())),0,5) . "." . $Ext;

解决方案 »

  1.   

    上传文件的类型应取自 $_FILES['Photo']['type'][$i]getimagesize 对非图片或无法识别的图片返回空
      

  2.   


    +++$_FILES['Photo']['type'][$i]是否有值?
    getimagesize函数是否被禁用?
      

  3.   

    采用了$_FILES['Photo']['type'][$i],
    在本地运行出现:
    Warning: getimagesize(image/pjpeg) [function.getimagesize]: failed to open stream: No such file or directory in C:\AppServ\www\Album\upload.php on line 212
    文件格式不符
    在空间运行依然出现:
    文件:塑001.jpg
    文件格式不符
      

  4.   

    $_FILES['Photo']['type'][$i] 给出的就是上传文件的 mime 类型!
      

  5.   

    <?php
    header ('Content-type: text/html; charset=utf-8');
    $countNum=count($_POST['Comment']);//出现多少次$countNumt就值就等于多少
    for($i=0; $i<$countNum; $i++){ //1
    if($_FILES['Photo']['name'][$i] != ""){ //2
    //echo "文件名称:" .$_FILES['Photo']['name'][$i]."<br>";
    if($_FILES['Photo']['error'][$i] > 0){//这几行是上传文件时显示的错误信息
    echo "文件:" .$_FILES['Photo']['name'][$i]."<br>";
    switch($_FILES['Photo']['error'][$i]){
    case 1 : die("文件大小超出 php.ini:upload_max_filesize 限制");
    case 2 : die("文件大小超 MAX_FILE_SIZE 限制");
    case 3 : die("文件仅被部分上传");
    case 4 : die("文件未被上传");
    }
    } $destDir = "../photos";//如果已上传,则指定文件夹名字为Photo
    if(!is_dir($destDir) || !is_writeable($destDir))//判断文件夹$destDit目录不存在或无法写入,两竖||是或的意思,叹号是反向(TRUE就是FALES
    die("目录不存在或无法写入");//终止并输出信息
    //判断文件格式
    $checkExt = $_FILES['Photo']['type'][$i]; //这里修改一下
    if($checkExt[2] == NULL)
    die("文件格式不符"); //指定扩展名
    switch($checkExt[2]){
    case 1 : $Ext = "gif";break;
    case 2 : $Ext = "jpg";break;
    case 3 : $Ext = "png";break;
    }
    //文件命名
    $Name = date("Ymd")."_".substr(md5(uniqid(rand())),0,5).".".$Ext;
    }
    }
    ?>
      

  6.   

    (南迁的候鸟)  : 
     试过了,
    在本地运行出现:
    Warning: getimagesize(image/pjpeg) [function.getimagesize]: failed to open stream: No such file or directory in C:\AppServ\www\Album\upload.php on line 212
    文件格式不符
    在空间运行依然出现:
    文件:塑001.jpg
    文件格式不符
      

  7.   

    <?php
    header ('Content-type: text/html; charset=utf-8');
    $countNum=count($_POST['Comment']);//出现多少次$countNumt就值就等于多少
    for($i=0; $i<$countNum; $i++){ //1
        if($_FILES['Photo']['name'][$i] != ""){ //2
            //echo "文件名称:" .$_FILES['Photo']['name'][$i]."<br>";
            if($_FILES['Photo']['error'][$i] > 0){//这几行是上传文件时显示的错误信息
                echo "文件:" .$_FILES['Photo']['name'][$i]."<br>";
                switch($_FILES['Photo']['error'][$i]){
                    case 1 : die("文件大小超出 php.ini:upload_max_filesize 限制");
                    case 2 : die("文件大小超 MAX_FILE_SIZE 限制");
                    case 3 : die("文件仅被部分上传");
                    case 4 : die("文件未被上传");
                }
            }        $destDir = "../photos";//如果已上传,则指定文件夹名字为Photo
            if(!is_dir($destDir) || !is_writeable($destDir))//判断文件夹$destDit目录不存在或无法写入,两竖||是或的意思,叹号是反向(TRUE就是FALES
            die("目录不存在或无法写入");//终止并输出信息
            //判断文件格式
            $checkExt = $_FILES['Photo']['type'][$i]; //这里修改一下
            if($checkExt == NULL) //这里也要改一下,刚才忘了
                die("文件格式不符");        //指定扩展名
            switch($checkExt[2]){
                case 1 : $Ext = "gif";break;
                case 2 : $Ext = "jpg";break;
                case 3 : $Ext = "png";break;
            }
            //文件命名
            $Name = date("Ymd")."_".substr(md5(uniqid(rand())),0,5).".".$Ext;
        }
    }
    ?>
      

  8.   

    在本地运行可以正常上传,但在租用的空间上就不行了,
    出现提示:
    文件名:001.jpg
    文件格式不符是不是我租用的空间有问题?还是需要改动哪里?
      

  9.   

    这个原来代码:if($_POST['validate'] == $_SESSION['authnum_session']){//验证码//以下是防止垃圾留言
    if($_POST['mmail'] != NULL){
    die ();
    }
    //以上是防止垃圾留言,接426行按钮//以下是检查文本域输入内容是否已经存在
    // *** Redirect if username exists
    $MM_flag="MM_insert";
    if (isset($_POST[$MM_flag])) {
      $MM_dupKeyRedirect="upload.php";
      $loginUsername = $_POST['number'];
      $LoginRS__query = sprintf("SELECT number FROM album WHERE number=%s", GetSQLValueString($loginUsername, "text"));
      mysql_select_db($database_mymy2012, $mymy2012);
      $LoginRS=mysql_query($LoginRS__query, $mymy2012) or die(mysql_error());
      $loginFoundUser = mysql_num_rows($LoginRS);  //if there is a row in the database, the username was found - can not add the requested username
      if($loginFoundUser){
        $MM_qsChar = "?";
        //append the username to the redirect page
        if (substr_count($MM_dupKeyRedirect,"?") >=1) $MM_qsChar = "&";
        $MM_dupKeyRedirect = $MM_dupKeyRedirect . $MM_qsChar ."requsername=".$loginUsername;
        header ("Location: $MM_dupKeyRedirect");
        exit;
      }
    }$editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
    //以上是检查文本域输入内容是否已经存在//引入函数
    include("resize.php");$editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {//0 header ('Content-type: text/html; charset=utf-8');
    $countNum=count($_POST['Comment']);//出现多少次$countNumt就值就等于多少
    for($i=0; $i<$countNum; $i++){ //1
    if($_FILES['Photo']['name'][$i] != ""){ //2
    //echo "文件名称:" .$_FILES['Photo']['name'][$i]."<br>";
    if($_FILES['Photo']['error'][$i] > 0){//这几行是上传文件时显示的错误信息
    echo "文件:" .$_FILES['Photo']['name'][$i]."<br>";
    switch($_FILES['Photo']['error'][$i]){
    case 1 : die("文件大小超出 php.ini:upload_max_filesize 限制");
    case 2 : die("文件大小超 MAX_FILE_SIZE 限制");
    case 3 : die("文件仅被部分上传");
    case 4 : die("文件未被上传");
    }
    }

    $destDir = "../photos";//如果已上传,则指定文件夹名字为Photo
    if(!is_dir($destDir) || !is_writeable($destDir))//判断文件夹$destDit目录不存在或无法写入,两竖||是或的意思,叹号是反向(TRUE就是FALES
    die("目录不存在或无法写入");//终止并输出信息
    //判断文件格式
    $checkExt = $_FILES['Photo']['type'][$i];
    if($checkExt == NULL)
    die("文件格式不符");

    //指定扩展名
    switch($checkExt[2]){
    case 1 : $Ext = "gif";break;
    case 2 : $Ext = "jpg";break;
    case 3 : $Ext = "png";break;
    }
    //文件命名
    $Name = date("Ymd") . "_"
    . substr(md5(uniqid(rand())),0,5) . "." . $Ext;

    //复制暂存档
    move_uploaded_file($_FILES['Photo']['tmp_name'][$i]
    , $destDir . "/" . $Name);

    //判断是否缩图
    //if($_POST['checkResize']){//判断用户是否勾选了缩略图选项
    $src = $destDir . "/" . $Name;
    $dest = $src;
    $destW = 320;//上传图片的宽度
    $destH = $destW;
    imagesResize($src,$dest,$destW,$destH);
    //}

    //预览图
    $src = $destDir . "/" . $Name;
    $dest = $destDir . "/thum/" . "thum_" . $Name;
    $destW = 100;//略图的宽度
    $destH = 100;//略图的高度
    $src2 =  $Name;
    $dest2 =  "thum_" . $Name;
    imagesResize($src,$dest,$destW,$destH);

      $insertSQL = sprintf("INSERT INTO album (Name, Name_thum, `Comment`,`value`,`type`,`content`,`number`,`exchange`,shengid,cityid,address,Nameph,Namesu,Username,ZName,Tel,Email,QQ,MSN,ip,up_time) VALUES (%s,%s,%s, %s, %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
       GetSQLValueString($src, "text"),
       GetSQLValueString($dest, "text"),
       GetSQLValueString($_POST['Comment'][$i], "text"),
       GetSQLValueString($_POST['value'][$i], "text"),
       GetSQLValueString($_POST['type'][$i], "text"),
       GetSQLValueString($_POST['content'], "text"),
       GetSQLValueString($_POST['number'], "text"),
       GetSQLValueString($_POST['exchange'][$i], "text"),
       GetSQLValueString($_POST['shengid'], "text"),
       GetSQLValueString($_POST['cityid'], "text"),
       GetSQLValueString($_POST['address'], "text"),
       GetSQLValueString($src2, "text"),
       GetSQLValueString($dest2, "text"),
       GetSQLValueString($_POST['Username'], "text"),
       GetSQLValueString($_POST['ZName'], "text"),
       GetSQLValueString($_POST['Tel'], "text"),
       GetSQLValueString($_POST['Email'], "text"),
       GetSQLValueString($_POST['QQ'], "text"),
       GetSQLValueString($_POST['MSN'], "text"),
       GetSQLValueString($_POST['ip'], "text"),
       GetSQLValueString($_POST['up_time'], "text"));   mysql_select_db($database_mymy2012, $mymy2012);
      $Result1 = mysql_query($insertSQL, $mymy2012) or die(mysql_error());

      $insertGoTo = "addsuccess.php";
      if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
     
      }//2
     }//1
    }//0
    }

    if (!isset($_GET['Num']))
    $Num=1;
    else
    $Num=$_GET['Num'];
    ?>
      

  10.   

    在接受提交的程序开始出加入
    print_r($_FILES);
    exit;上传文件后,帖出结果
      

  11.   

    可以写出来吗?我试着写,不行,
    出现以下提示:Array ( [Photo] => Array ( [name] => Array ( [0] => 濉戞枡鐩?jpg ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 6 ) [size] => Array ( [0] => 0 ) ) ) 
      

  12.   

    我的QQ10901075 可以的话加我Q,我把网页文件发出来具体看看,哪里出错了.
      

  13.   

    这是我的页面代码:http://bbs.8u.cn/read.php?tid=7960#  请帮帮看看,是我的页面问题还是租用的空间问题?应该怎么改?
      

  14.   


    UPLOAD_ERR_OK 
    其值为 0,没有错误发生,文件上传成功。 UPLOAD_ERR_INI_SIZE 
    其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 UPLOAD_ERR_FORM_SIZE 
    其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 UPLOAD_ERR_PARTIAL 
    其值为 3,文件只有部分被上传。 UPLOAD_ERR_NO_FILE 
    其值为 4,没有文件被上传。 UPLOAD_ERR_NO_TMP_DIR 
    其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。 UPLOAD_ERR_CANT_WRITE 
    其值为 7,文件写入失败。PHP 5.1.0 引进。 
    =============================================
    是你的免费空间对系统临时目录没有权限!!!!!
      

  15.   

    我做了个测试页,
    代码如下:
    <?php 
    echo "文件名称:".$_FILES['myfile']['name']."<br>";
    echo "文件大小:".$_FILES['myfile']['size']."<br>";
    echo "文件格式:".$_FILES['myfile']['type']."<br>";
    echo "临时文件名:".$_FILES['myfile']['tmp_name']."<br>";
    echo "错误代码:".$_FILES['myfile']['error']."<br>";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
      <input type="file" name="myfile" id="myfile" />
      <input type="submit" name="button" id="button" value="提交" />
      <input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="10000000" />
    </form>
    </body>
    </html>上传文件系统显示如下
    文件名称:绿茶.jpg
    文件大小:0
    文件格式:
    临时文件名:
    错误代码:6与免费空间联系,他们说是我网页的原因与他们无关系。我该怎么办啊?
      

  16.   

    echo ini_get('upload_tmp_dir');
    看看是否有值,若有则检查该路径是否可写
    否则联系管理员,要求正确的配置
     
      

  17.   

    加了echo ini_get('upload_tmp_dir');后显示:
    文件名称:绿茶.jpg
    文件大小:0
    文件格式:
    临时文件名:
    错误代码:6
    e:\temp\temp
      

  18.   

    type返回的是mine类型,楼主可以参考下PHP教程网PHP文件上传教程,对你有帮助。
      

  19.   

    is_writable -- 判断给定的文件名是否可写
    bool is_writable ( string filename )
    $d = ini_get('upload_tmp_dir');
    echo is_writeable($d) ? '可写' : '不可写';
      

  20.   

    xuzuning
    (唠叨) ,你好!   $d = ini_get('upload_tmp_dir');
                   echo is_writeable($d) ? '可写' : '不可写';
    在本地运行及网站空间都是显示'不可写',所以还不敢确认是否联系管理员,要求正确的配置,因为本地运行也出现了显示'不可写' 但也可以上传。
      

  21.   

    具体如下:
    <?php 
    echo "文件名称:".$_FILES['myfile']['name']."<br>";
    echo "文件大小:".$_FILES['myfile']['size']."<br>";
    echo "文件格式:".$_FILES['myfile']['type']."<br>";
    echo "临时文件名:".$_FILES['myfile']['tmp_name']."<br>";
    echo "错误代码:".$_FILES['myfile']['error']."<br>";
    echo ini_get('upload_tmp_dir')."<br>"; $d = ini_get('upload_tmp_dir');
    echo is_writeable($d) ? '可写' : '不可写';
    ?>《在空间上的显示结果:》
    文件名称:绿茶.jpg
    文件大小:0
    文件格式:
    临时文件名:
    错误代码:6
    e:\temp\temp
    不可写
      

  22.   

    <?phpif ((($_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 "Error: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
        }
      }
    else
      {
      echo "Invalid file";
      }?>
    前面几行表示上传文件的格式符合其一即可,这段代码你看下
      

  23.   

    wuda00001我在你的代码后加了两句,
    if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
    $destDir = "photos
    if(!is_dir($destDir) || !is_writeable($destDir)) die("目录不存在或无法写入");然后在空间运行,出现“Invalid file目录不存在或无法写入”提示。
      

  24.   

    Invalid file不可写 啊?xuzuning
    (唠叨) ,我该怎么跟他们免费空间说?
      

  25.   

    错误代码:6
    UPLOAD_ERR_NO_TMP_DIR  
    其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
    已经说得再清楚不过了,总是死缠烂打也是不可能出成果的!!!
      

  26.   

    啊!!!怎么我的结贴跌到75%了.
    明明登录了,怎么提示"您还没有在CSDN登录,请登录或者注册"登录了也记不了贴.这样下去没人给我回帖了.