douluanji8752 2015-05-07 13:01
浏览 26
已采纳

尽管包含MIME类型,但不加载PDF类型文件

I have a form that aims to upload pdf's, MSWord docs, MSExcel files, and MSPowerpoint.

I'm tying to do a PHP validation as follows

<?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
}

?>

Why am I not able to upload pdf-like files but can upload MSword-like files? I have seen similar questions like this but I want to know why for this particular case it is not working for me.

  • 写回答

2条回答 默认 最新

  • doupoji3856 2015-05-07 13:30
    关注

    This is my test code:

    <?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 . "
    " ;
          $show .= "
    file type: " . var_export($filetype,true). "
    ";
          $show .= "
      ###";
        }
    
    
    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;
    ?>
    

    Results


    saved sucessfully

    For uploads without the multiple set:

      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);
        }
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿