尽管MIME类型包含在内,但PDF类型文件仍未加载



我的表单旨在上传PDF,MSWORD DOCS,MSEXCEL FILES和MSPOWERPOINT。

我正在与以下方式进行PHP验证

<?php
if (isset($_FILES['fileupload'])){
  $filetype = array('application/pdf', 'application/msword', 'application/mspowerpoint');
  if (in_array($_FILES['fileupload']['type'], $filetype)){
    if(move_uploaded_file($_FILES["fileupload"]["tmp_name"], "/var/www/uploads/" . $_FILES["fileupload"]["name"])){
        $filename = basename($_FILES['fileupload']['name']);
        echo $filename;
      }//close moveupload
    }//close in_array
  }//close isset
}
?>

为什么我无法上传类似PDF的文件,而可以上传类似Msword的文件?我看过类似的问题,但我想知道为什么在这种情况下对我不起作用。

给您要上传的任何文件类型的案例

 $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $mime = finfo_file($finfo, $_FILES['file']['type']);
    switch ($mime) {
       case 'application/pdf':
       default:
           die("Unknown/not permitted file type");
    }

这是我的测试代码:

<?php 
ob_start("ob_gzhandler");
header('Content-Type: text/html; charset=utf-8');
  $filetype = array('application/pdf', 'application/msword', 'application/mspowerpoint');
  $type = $_FILES['fileupload']['type'];
  if (in_array($type, $filetype)){
    if(move_uploaded_file($_FILES["fileupload"]["tmp_name"], $_FILES["fileupload"]["name"])){
        $filename = basename($_FILES['fileupload']['name']);
        $show .= '<h2>saved sucessfully</h2>';
      }//close moveupload
    }//close in_array
    else{
      $show .= '$type = ' . $type . "n" ;
      $show .= "nfile type: " . var_export($filetype,true). "n";
      $show .= "n  ###";
    }

echo <<<EOT
<!DOCTYPE html>
<html lang="en"><head><title>Test Bed</title></head></body><pre>
$show
</pre>
in_array
application/pdf
application/pdf
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="fileupload" />
<button>Submit</button>
</form></body></html>
EOT;
?>

结果


成功保存

用于上传,没有多个集合:

  if ($_FILES["fileupload"]["error"] == UPLOAD_ERR_OK) {
    if (!in_array($_FILES['fileupload']['type'], $filetype)){
      $tmp_name = $_FILES["fileupload"]["tmp_name"];
      $filename = basename($_FILES["fileupload"]["name"]);
      move_uploaded_file($tmp_name, $filename);
    }
  }
}

最新更新