PHP文件类型列表

6
我正在寻找一个列出/描述基于上传的文件php分配的文件类型的清单。
我有以下脚本。它接受上传的文件和文件类型。将其与数组进行比较以检查是否允许该类型,然后继续执行脚本。
$file  = $_FILES['attachment']['tmp_name'];

//check file is correct type
$fileType = $_FILES['attachment']['type'];
// array of allowed file extensions
$fileTypeArray = ["application/pdf", "application/doc", "application/docx", "application/rtf", "application/txt", "application/odf", "application/msword"];


// now check that the file type matches that of the array. 
if (!in_array($fileType, $fileTypeArray)){ 

我想允许上传任何doc, pdf, txt等格式的文件。这个功能旨在处理上传的简历。如果您有更好的解决方案,请告诉我。谢谢!


1
尽情享受吧 :) 我认为你想手动定义 $fileTypeArray,除非你想允许所有现有类型? - Félix Adriyel Gagnon-Grenier
谢谢Felix,太棒了!你认为这是一个全面的列表吗? - atoms
1
at least comprehensible :) - Félix Adriyel Gagnon-Grenier
2
正如你现在可能已经猜到的那样:文件类型的列表是无穷无尽的。任何人都可以创造一个新的文件类型并使用它。如果有人说:“这些就是所有的类型,没有别的了。”那将是愚蠢的。你可以试着列出一个很长的列表,但它永远不会完整。由于同样的原因,在PHP中也没有任何列表存在。 - KIKO Software
1个回答

5
这些媒体类型实际上是MIME类型,PHP对它们进行管理(以下摘自MDN
媒体类型(也称为多用途Internet邮件扩展或MIME类型)是指文档、文件或一组字节的性质和格式的标准。它在IETF的RFC 6838中定义和规范化。 Internet Assigned Numbers Authority (IANA)负责所有官方MIME类型,并且您可以在其Media Types页面上找到最新和完整的列表。
其中有一些,列表可能会不断扩展。
为了进行比较,我认为您希望手动定义可接受的类型,因为使用通用类型列表会导致所有类型都可接受(这似乎不是您的目标)。
我还会添加指向 输入手册 的链接,并建议您阅读 accept 属性,该属性可以在客户端上直接过滤文件。

如果 type 属性的值为 file,则此属性指示服务器接受的文件类型;否则将被忽略。该值必须是唯一内容类型规范的逗号分隔列表:

不要让文本欺骗您;如果文件不在 accept 类型中,则用户将无法选择该文件,但请注意,服务器也需要验证,因为可以直接提交表单到服务器并绕过任何客户端验证。

1
非常感谢您的详细解释,Felix。我也已经在客户端实现了 :) - atoms

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接