Heim >Backend-Entwicklung >PHP-Tutorial > PHP上传有关问题

PHP上传有关问题

WBOY
WBOYOriginal
2016-06-13 13:30:56915Durchsuche

PHP上传问题
在IE里不加case "application/octet-stream":这句能正常上传.zip文件,但是在谷歌浏览器里不行,然后加了这句话后,IE上传其他类型的文件时都会弄成.zip的,也不报错,谷歌倒是正常了,请问是哪里有问题呢??
一下是代码:
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 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 "你传的文件太大啦!";
  }
}
?>


 
 


------解决方案--------------------
$_FILES['file']['type'] 中的值是浏览器产生的
也就是说浏览器说他是什么就是什么

如果你需要根据这个来判定上传文件的类型,就需要了解各种浏览器都可能识别成什么
------解决方案--------------------
浏览器识别不了的都是这个类型,这个是看浏览器能力的。
Content-Type: application/octet-stream
------解决方案--------------------
不可能,你没办法去修改浏览器
即使你有能力修改浏览器,也不可能让用户去使用你修改后的浏览器

不是还有个 name 项吗?根据后缀判别一下

再就是查看文件的前几个字节,来判定文件类型
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn