在IE里不加case  "application/octet-stream":这句能正常上传.zip文件,但是在谷歌浏览器里不行,然后加了这句话后,IE上传其他类型的文件时都会弄成.zip的,也不报错,谷歌倒是正常了,请问是哪里有问题呢??
一下是代码:
<?php
if(!empty($_POST['sub'])){
     $ym=$_FILES['up']['name'];
     $size=$_FILES['up']['size'];    
     $tmpname=$_FILES['up']['tmp_name'];
     $error=$_FILES['up']['error'];     
echo $lx=$_FILES['up']['type'];
   if($size<=2000000){
 switch ($lx){
case  "image/jpg":
case  "image/pjpeg":
case  "image/jpeg":
$lujing=".jpg";
break;
case  "image/gif":
$lujing=".gif";
break;
case  "image/x-png":
case  "image/png":
$lujing=".png";
break;
case  "application/x-zip-compressed":
case  "application/octet-stream":
$lujing=".zip";
break;
case  "application/pdf":
$lujing=".pdf";
break;
default:$lujing=false;
 }    
    if($lujing==".jpg" || $lujing==".gif" || $lujing==".png"){
     if(!file_exists('img')){
          mkdir("img");
     }
           move_uploaded_file($tmpname, "img/".time().$lujing);
          
                      switch($error){
                      case 0:
                      Echo "上传成功"; break;
                   }        
     }elseif($lujing==".zip"){
     if(!file_exists('zip')){
            mkdir("zip");
     }
          move_uploaded_file($tmpname, "zip/".time().$lujing);
                   switch($error){
                      case 0:
                      Echo "上传成功"; break;
                  }
     }elseif($lujing==".pdf"){
     if(!file_exists('pdf')){
            mkdir("pdf");
     }
          move_uploaded_file($tmpname, "pdf/".time().$lujing);
                   switch($error){
                      case 0:
                      Echo "上传成功"; break;
                     }
     }
     else{
          echo "文件超出类型!";
        }
     }else{
     echo "你传的文件太大啦!";
         }
}
?>
<form action="" method="post" enctype="multipart/form-data">
  <input type="file" name="up">
  <input type="submit" name="sub" value="上传">
</form>

解决方案 »

  1.   

    $_FILES['file']['type'] 中的值是浏览器产生的
    也就是说浏览器说他是什么就是什么如果你需要根据这个来判定上传文件的类型,就需要了解各种浏览器都可能识别成什么
      

  2.   

    浏览器识别不了的都是这个类型,这个是看浏览器能力的。
    Content-Type: application/octet-stream
      

  3.   

    现在是谷歌没问题了,但是IE有问题,因为case "application/octet-stream":这句IE浏览器貌似把不能识别的文件都读成.zip格式的了。我想兼容IE和谷歌浏览器,是不是可以改一下哪里就行了呢?
      

  4.   

    不可能,你没办法去修改浏览器
    即使你有能力修改浏览器,也不可能让用户去使用你修改后的浏览器不是还有个 name 项吗?根据后缀判别一下再就是查看文件的前几个字节,来判定文件类型