4

我正在努力使此上传代码适用于 docx 文件,它适用于 doc 和 pdf ..

$allowedExts = array("pdf", "doc", "docx");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/msword"))
&& ($_FILES["file"]["size"] < 20000000)
&& in_array($extension, $allowedExts))
 {
  if ($_FILES["file"]["error"] > 0)
 {
   echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
 }

这是不久前的一个项目的一部分,老实说,我不记得该怎么做..

我知道这不是最安全的上传方法,但如果有人可以提供帮助,我们将不胜感激!

我想我需要在这里添加另一行:

if ((($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/msword"))
&& ($_FILES["file"]["size"] < 20000000)

只是不确定是什么.. 帮助表示赞赏!

编辑:所以我已经到了这个阶段(在评论的帮助下!)

$allowedExts = array("pdf", "doc", "docx");
$extension = end(explode(".", $_FILES["file"]["name"]));
//if ((($_FILES["file"]["type"] == "application/pdf")
//|| ($_FILES["file"]["type"] == "application/msword"))
if (($_FILES["file"]["type"] == "application/pdf") 
|| ($_FILES["file"]["type"] == "application/msword") 
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-    officedocument.wordprocessingml.document"))
&& ($_FILES["file"]["size"] < 20000000)

&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {

但现在它出现了:解析错误:语法错误,第 30 行 /var/sites/s/stanation.com/public_html/forms/process/insert.php 中的意外 T_BOOLEAN_AND

4

3 回答 3

14

检查docx此 MIME 类型

application/vnd.openxmlformats-officedocument.wordprocessingml.document

编辑 :

这是代码。你少了括号

<?php

    $allowedExts = array("pdf", "doc", "docx");
    $extension = end(explode(".", $_FILES["file"]["name"]));
    if (($_FILES["file"]["type"] == "application/pdf") || ($_FILES["file"]["type"] == "application/msword") || ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") && ($_FILES["file"]["size"] < 20000000) && in_array($extension, $allowedExts))
    {
      if ($_FILES["file"]["error"] > 0)
      {
         echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
      }
      else
      {
        echo "Success";
      }
  }
于 2013-09-15T16:28:45.287 回答
0

以下检查将帮助您上传.docx文件:

$_FILES["txtFile"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
于 2014-03-11T07:48:54.617 回答
0

还有另一种方法可以完成任务。只需检查文件类型,然后您就可以进一步工作。

这是检查文件类型的代码。

$target_dir = "uploads/";
$filename= $_FILES["fileupload"]["name"]; //gets filename with type
$target_file = $target_dir . basename($filename); //uploads/file.type
echo $target_file;
$extension= pathinfo($target_file,PATHINFO_EXTENSION); 
$imageFileType = strtolower($extension);
if(strcmp($imageFileType,"docx")==0){
    echo "Its word file";
}
于 2018-05-29T10:24:36.607 回答