php处理enctype multipart / form-data

时间:2014-01-24 22:45:43

标签: php

我正在使用这个PHP File Upload示例。

我看到 $ _ FILES [“file”] [“type”] 是上传文件的类型。

当他们后来根据这些类型对文件上传施加限制时,看起来它们都是图像类型。

这是PHP:

<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$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"]["size"] < 20000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br>";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
?>

对于他们的四(4)$allowedExts,他们定义了六(6)$_FILES["file"]["type"]

我需要修改我的脚本以允许更多扩展名:

'txt', 'doc', 'docx', 'xls', xlsx', 'zip', 'pdf'

我进行了搜索,试图找出我需要过滤的文件类型,但我遇到的最好的是HTML enctype Attribute,但它并没有告诉我需要编写哪些类型的代码

我能够了解到这些类型 NOT 与MIME类型相同,所以我不能只使用它们。

在限制我的上传时,PHP已定义的类型列表在哪里可以过滤?

这可能就像知道PHP调用它一样简单。

1 个答案:

答案 0 :(得分:2)

  

$ allowedExts = array(“gif”,“jpeg”,“jpg”,“png”,“txt”,“doc”,“docx”,“xls”,“xlsx”,“zip”,“pdf “);

MIME-Types如下

.txt  - text/plain
.doc  - application/msword
.docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document
.xls  - application/vnd.ms-excel
.xlsx - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.zip  - application/zip
.pdf  - application/pdf