做了个图片上传的功能,老是提示两行错误:
Notice: Undefined index: upload in D:\WWW\qiangyuan\up.php on line 34
Notice: Undefined index: upload in D:\WWW\qiangyuan\up.php on line 41代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body,td,th {
color: #FF0000;
font-size: 12px;
}
body {
margin-left: 2px;
margin-top: 2px;
margin-right: 2px;
margin-bottom: 0px;
background-color: #e3efe7;
}
-->
</style>
</head>
<body> <form name="form1" action="" enctype="multipart/form-data"   method="post">  <input name="upload" type="file"> 
  <input type="submit" value="确定上传">
 </form><?php
/** 
 * $file_ext:上传的文件图片格式;
 * $file_name:上传后,存在服务器上的新路径和文件名;
*/ $file_ext = $_FILES["upload"]["name"];
 $file_ext_rev = strrev($file_ext);
 $file_ext_num = strrpos($file_ext_rev, ".");
 $file_ext = strrev($file_ext_rev);
 $file_ext = substr($file_ext, -$file_ext_num);
 $file_ext = strtolower($file_ext); if ($_FILES["upload"]["size"] > 0)
 {
  //限定上传的文件格式
  if ($file_ext === "jpg" || $file_ext == "jpeg" || $file_ext == "gif" || $file_ext == "png")
  {
   if ($_FILES["upload"]["size"] < 400000)  //图片大小不能大于 400 K
   {    
    $file_name = "./" . date("YmdHis");
    $file_name .= "." . $file_ext;      $tmp_name = $_FILES["upload"]["tmp_name"]; 
     move_uploaded_file($tmp_name, "product/$file_name"); //上传到图片目录
  
  echo substr($file_name,2);//输出生成的图片名
  
  echo "<br><br>";
  echo "<A href='javascript:window.close()'><div align='right'><img src='images/close.jpg' border='0' width='60' height='18' align='middle'></div></a>";
 
   }
   else
   {
    echo "上传的文件图片大小必须小于400kb";
   }
  }
  else
  {
   echo "上传的文件格式有误";
  }
 }
?>
</body>
</html>

解决方案 »

  1.   

     $file_ext = $_FILES["upload"]["name"];
     if ($_FILES["upload"]["size"] > 0)提示的是这两行出错
      

  2.   

    在  $file_ext = $_FILES["upload"]["name"]; 之前加入
    if($_SERVER['REQUEST_METHOD'] != "POST") return;
      

  3.   

    要先判断一下表单有没有被提交,如果有文件上传了再进行处理:if (isset($_FILES['upload']) {
          $file_ext = $_FILES["upload"]["name"];
          $file_ext_rev = strrev($file_ext);
          $file_ext_num = strrpos($file_ext_rev, ".");
          /.....
    }
      

  4.   


    $file=$_FILES["upload"];
    $ext = explode(".",$file['name']);
    $name=$_FILES["upload"]["name"];//上传文件名
      $count_ext = $ext[count($ext)-1]; //上传文件后缀名
    if($count_ext != 'jpg' && $count_ext !='gif' && $count_ext !='png')
      {
       return '只能上传.jpg,.gif,.png的格式图片,请重新上传!';
      }
      

  5.   

    对 $_FILES['upload']['error'] == '0' 进行判断,看看有没有传到php.你也可以在用$_FILES 之前先print_r($_FILES); 查看各项参数。
      

  6.   

    把php代码放到html代码上边,因为php在html前执行。
    <?php
    ……
    ?>
    <html>
    ……
    </html>
      

  7.   


    上面isset的方式比较好。if(isset($_FILES["upload"])){
    --------------------------
     $file_ext = $_FILES["upload"]["name"];
      ----------
      echo "上传的文件格式有误";
      }
     }
     -----------
    }