这是HTML代码,三个file上传文本框,需要限定长传的文件格式jpg,jpeg,bmp和大小2mb    <input name="image[]" type="file" id="image1" size="30" />
    <input name="image[]" type="file" id="image2" size="30" />
    <input name="image[]" type="file" id="image3" size="30" />         $msg='';
$j=1;
foreach($_FILES['image']['name'] as $i=>$name)
{
   $kzm=strtolower(substr($name,strrpos($name,".")+1));//将所有扩展名改成小写
   if(!empty($kzm))//扩展名不为空时
   {
       if(!in_array($kzm,array('jpg','jpeg','bmp')))
   {
      $msg.="<script>alert('写真".$j."图片格式错误');</script>";
   }
  else if($_FILES['image']['size'][$i]>2000000)
   {
      $msg.="<script>alert('图片".$j."大于2MB');</script>";
   }
   }
            if(!empty($msg))
   {
       echo $msg;
       return;    
   }
   //如果单纯写到这一步   做判断可以判断出第几个文本框上传的有错误,但是还牵涉一个上传,在数据库中有3个存放image的字段,image1,image2,image3,所以上传和SQL语句,就必须是3个,问题就出现在下边的这个$j+=1;
    $j += 1;
   //如果上边的语句都通过就应该上传文件,和用SQL语句插入数据库,但是我在写这两项的时候碰到问题,把else写在$j+=1后边,就会报错,但是$j+=1还只能写在那.
     else
 {
    if(!is_dir("file"))//file不存在的情况下建立file文件夹
     {
      mkdir("file");
   }
            $upfile1="file/".date(ymjhis).rand(1,1000).".".$kzm1;//上传路径
     $upfile2="file/".date(ymjhis).rand(1,1000).".".$kzm2;
   $upfile3="file/".date(ymjhis).rand(1,1000).".".$kzm3;
   move_uploaded_file($_FILES[image1][tmp_name],$upfile1);//上传文件
     move_uploaded_file($_FILES[image2][tmp_name],$upfile2);
   move_uploaded_file($_FILES[image3][tmp_name],$upfile3);
$sql="insert into huanjie_ecms_wishfemale (name,jname,email,tel,handphone,wish1,wish2,wish3,wish4,asse,image1,image2,image3) values ('$name','$jname','$email','$tel','$handphone','$wish1','$wish2','$wish3','$wish4','$asse','$upfile1','$upfile2','$upfile3')";//SQL语句
     include("db.php");//数据库操作
 if($ret)
 {   
     echo "<script>alert('输入成功');</script>";
 }
}
//反正我写到这基本都乱了,不知道该怎么理顺
上传到服务器的页,是按照最麻烦的方法写的,而且判断时存在BUG,就看那帮用户能不能发现了
求高手帮忙~~~

解决方案 »

  1.   

    <?php
    $msg='';
    $j=1;
    foreach($_FILES['image']['name'] as $i=>$name)
    {
    $kzm=strtolower(substr($name,strrpos($name,".")+1));//将所有扩展名改成小写
    if(!empty($kzm))//扩展名不为空时
    {
    if(!in_array($kzm,array('jpg','jpeg','bmp')))
    {
    $msg.="<script>alert('写真".$j."图片格式错误');</script>";
    }
    else if($_FILES['image']['size'][$i]>2000000)
    {
    $msg.="<script>alert('图片".$j."大于2MB');</script>";
    }
    }
    $j += 1;
    if(!empty($msg)){
    echo $msg;
    // 不知道你具体想怎么做,但是如果这里出错的话,应该用break跳出foreach循环,而不是用return;
    break;
    }
    else
    {
    if(!is_dir("file"))//file不存在的情况下建立file文件夹
    {
    mkdir("file");
    }
    $upfile1="file/".date(ymjhis).rand(1,1000).".".$kzm1;//上传路径
    $upfile2="file/".date(ymjhis).rand(1,1000).".".$kzm2;
    $upfile3="file/".date(ymjhis).rand(1,1000).".".$kzm3;
    move_uploaded_file($_FILES[image1][tmp_name],$upfile1);//上传文件
    move_uploaded_file($_FILES[image2][tmp_name],$upfile2);
    move_uploaded_file($_FILES[image3][tmp_name],$upfile3);
    $sql="insert into huanjie_ecms_wishfemale (name,jname,email,tel,handphone,wish1,wish2,wish3,wish4,asse,image1,image2,image3) values ('$name','$jname','$email','$tel','$handphone','$wish1','$wish2','$wish3','$wish4','$asse','$upfile1','$upfile2','$upfile3')";//SQL语句
    include("db.php");//数据库操作
    if($ret)
    {
    echo "<script>alert('输入成功');</script>";
    }
    }
    }
    ?>
      

  2.   

    没看懂,你这个$j变量为什么是必须的?
    你判断图片是否有问题可以在浏览的时候用js判断
    当然批量上传我推荐你用swfupload这个flash上传插件,非常好用,也很简单
      

  3.   

    $fileinfo=pathinfo($_Post['filename']['name']);
    $fileinfo['extension']