当您上传文件时,您可以从$ _FILES获取必要的数据 files包含文件输入列表,其中每个文件都有[type]
之类的字段例如:
Array
(
[file1] => Array
(
[name] => 'MyFile.txt'
[type] => text/plain //where does this come from?
[tmp_name] => /tmp/php/php1h4j1o
[error] => UPLOAD_ERR_OK
[size] => 123
)
)
是来自文件,文件扩展名还是其他地方? php如何获得类型? [type]来自哪里,我可以相信它是有效的吗?
答案 0 :(得分:7)
来自the manual:
$_FILES['userfile']['type']
文件的mime类型,如果是 浏览器提供了此信息。一个 例如“image / gif”。这个 但是没有检查mime类型 PHP方面因此不采取 它的价值是理所当然的。
答案 1 :(得分:4)
浏览器尝试从文件名中确定MIME类型,可能是从其扩展名中确定,然后将其作为上载请求的一部分发送。因此,在您的示例中,文件扩展名.txt
将对应于MIME类型text/plain
。这取决于浏览器的实现。
由于每个浏览器不仅有自己的方式来确定MIME类型,而且简单地通过更改文件扩展名(在众多其他方法中)也可以故意欺骗MIME类型,因此不应该始终信任它正确的。
事实上,你最好不要试图阅读文件的内容或其他东西来验证它。
答案 2 :(得分:1)
该类型由浏览器确定和设置。这意味着它将受到浏览器制作,版本,安装程序和许多其他东西的影响。换句话说,它对服务器端应用程序来说几乎没用。
(例如,这意味着MSIE上传的照片将为type => image/pjpeg
;而JPEG最常见的MIME类型为image/jpeg
)