如何用php上传odt/doc/pdf/txt文件

如何用php上传odt/doc/pdf/txt文件,php,file-upload,Php,File Upload,我无法让我的上传脚本用于pdf、doc、odt和txt文件格式。 是否有一种方法可以接受所有的文件格式,只要对象上有限制的maxsize? 这是我的剧本: <?php $allowedExts = array("gif", "jpeg", "jpg", "png", "doc", "odt", "pdf", "txt"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILE

我无法让我的上传脚本用于pdf、doc、odt和txt文件格式。 是否有一种方法可以接受所有的文件格式,只要对象上有限制的maxsize? 这是我的剧本:

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png", "doc", "odt", "pdf", "txt");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/txt")
|| ($_FILES["file"]["type"] == "application/doc")
|| ($_FILES["file"]["type"] == "application/odt"))
&& ($_FILES["file"]["size"] < 50000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Feilmelding: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Denne filen er lastet opp: " . $_FILES["file"]["name"] . "<br>";
    echo "Type fil:: " . $_FILES["file"]["type"] . "<br>";
    echo "Størrelse: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " Filen eksisterer, bytt navn. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Filen er lagret her: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Feil Filtype";
  }
?>

它适用于图片,但不适用于应用程序。 任何帮助都将不胜感激,祝你平安夜愉快


提前,谢谢:)

您使用的媒体类型不正确。正确的介质类型包括:

  • application/msword for.doc
  • text/plain for.txt
  • application/vnd.oasis.opendocument.text for.odt
  • 申请表/pdf for.pdf

看看不同的。我会打印或记录if(){}语句上方的$_FILES[“file”][“type”]字符串,以确保通过(并由php解析)的MIME类型是您期望的MIME类型。正如Jason在上面指出的,.odt很可能会使用“application/vnd.oasis.opendocument.text”作为mime类型。不要使用W3傻瓜上传脚本。这是非常糟糕的代码和高度不安全的。有什么特别不起作用?它在你的if/else结构中有多远?它是去回显“Feil Filtype”,还是在if中的某个地方失败了?现在我知道了MIME类型,它就可以工作了,谢谢大家:)它只是用于一个小型的群组聊天应用程序,所以安全性并不是很重要,可能应该是这样的,但是谢谢大家的评论