【问题标题】:What are the file types you can upload via PHP?您可以通过 PHP 上传哪些文件类型?
【发布时间】:2013-04-11 19:59:02
【问题描述】:

我正在尝试查找显示“TYPES”的不同名称的参考$_FILES["file"]["type"] == "image/gif",但我正在寻找 csv、ms excel、mac 数字、ms词等。

我在 php.net 或 google 上找不到任何东西。无论如何,我很可能称它是错误的。

我应该寻找什么?

【问题讨论】:

  • 来自用户的浏览器(称为mimetype)reference
  • mac numbers 什么时候成为文件类型了?
  • 我的意思是 Mac 的 Numbers 电子表格文件。

标签: php file-upload file-type


【解决方案1】:

您正在寻找 MIME 类型。但是请注意,您不应该信任$_FILES['...']['type']。相反,您应该自己分析文件内容以确保它们的格式正确。

【讨论】:

  • 这就是我想要的。谢谢。
【解决方案2】:

在论坛上找到以下列表,似乎已经足够完整,可以在这里发布

'hqx'   =>  'application/mac-binhex40'
'cpt'   =>  'application/mac-compactpro'
'csv'   =>  'text/x-comma-separated-values', 'application/vnd.ms-excel'
'bin'   =>  'application/macbinary'
'dms'   =>  'application/octet-stream'
'lha'   =>  'application/octet-stream'
'lzh'   =>  'application/octet-stream'
'exe'   =>  'application/octet-stream'
'class' =>  'application/octet-stream'
'psd'   =>  'application/x-photoshop'
'so'    =>  'application/octet-stream'
'sea'   =>  'application/octet-stream'
'dll'   =>  'application/octet-stream'
'oda'   =>  'application/oda'
'pdf'   =>  'application/pdf', 'application/x-download'
'ai'    =>  'application/postscript'
'eps'   =>  'application/postscript'
'ps'    =>  'application/postscript'
'smi'   =>  'application/smil'
'smil'  =>  'application/smil'
'mif'   =>  'application/vnd.mif'
'xls'   =>  'application/excel', 'application/vnd.ms-excel'
'ppt'   =>  'application/powerpoint'
'wbxml' =>  'application/wbxml'
'wmlc'  =>  'application/wmlc'
'dcr'   =>  'application/x-director'
'dir'   =>  'application/x-director'
'dxr'   =>  'application/x-director'
'dvi'   =>  'application/x-dvi'
'gtar'  =>  'application/x-gtar'
'gz'    =>  'application/x-gzip'
'php'   =>  'application/x-httpd-php'
'php4'  =>  'application/x-httpd-php'
'php3'  =>  'application/x-httpd-php'
'phtml' =>  'application/x-httpd-php'
'phps'  =>  'application/x-httpd-php-source'
'js'    =>  'application/x-javascript'
'swf'   =>  'application/x-shockwave-flash'
'sit'   =>  'application/x-stuffit'
'tar'   =>  'application/x-tar'
'tgz'   =>  'application/x-tar'
'xhtml' =>  'application/xhtml+xml'
'xht'   =>  'application/xhtml+xml'
'zip'   => 'application/x-zip', 'application/zip', 'application/x-zip-compressed'
'mid'   =>  'audio/midi'
'midi'  =>  'audio/midi'
'mpga'  =>  'audio/mpeg'
'mp2'   =>  'audio/mpeg'
'mp3'   =>  'audio/mpeg'
'aif'   =>  'audio/x-aiff'
'aiff'  =>  'audio/x-aiff'
'aifc'  =>  'audio/x-aiff'
'ram'   =>  'audio/x-pn-realaudio'
'rm'    =>  'audio/x-pn-realaudio'
'rpm'   =>  'audio/x-pn-realaudio-plugin'
'ra'    =>  'audio/x-realaudio'
'rv'    =>  'video/vnd.rn-realvideo'
'wav'   =>  'audio/x-wav'
'bmp'   =>  'image/bmp'
'gif'   =>  'image/gif'
'jpeg'  =>  'image/jpeg', 'image/pjpeg'
'jpg'   =>  'image/jpeg', 'image/pjpeg'
'jpe'   =>  'image/jpeg', 'image/pjpeg'
'png'   =>  'image/png',  'image/x-png'
'tiff'  =>  'image/tiff'
'tif'   =>  'image/tiff'
'css'   =>  'text/css'
'html'  =>  'text/html'
'htm'   =>  'text/html'
'shtml' =>  'text/html'
'txt'   =>  'text/plain'
'text'  =>  'text/plain'
'log'   =>  'text/plain', 'text/x-log'
'rtx'   =>  'text/richtext'
'rtf'   =>  'text/rtf'
'xml'   =>  'text/xml'
'xsl'   =>  'text/xml'
'mpeg'  =>  'video/mpeg'
'mpg'   =>  'video/mpeg'
'mpe'   =>  'video/mpeg'
'qt'    =>  'video/quicktime'
'mov'   =>  'video/quicktime'
'avi'   =>  'video/x-msvideo'
'movie' =>  'video/x-sgi-movie'
'doc'   =>  'application/msword'
'word'  =>  'application/msword', 'application/octet-stream'
'xl'    =>  'application/excel'
'eml'   =>  'message/rfc822'

【讨论】:

  • 大多数 Web 服务器都带有一个 conf/mime.types` 文件,其中列出的内容远不止于此
【解决方案3】:

这实际上在 PHP 手册中有解释。

来自http://php.net/manual/en/features.file-upload.post-method.php(强调我的)

$_FILES['userfile']['type']文件的 mime 类型,如果浏览器提供了此信息。一个例子是“image/gif”。然而,这种 mime 类型在 PHP 端没有被检查,因此不要认为它的价值是理所当然的。

所以您要查找的术语是MIME TYPE。把它放到谷歌可能会让你最终进入维基百科的https://en.wikipedia.org/wiki/Internet_media_type

Internet 媒体类型[1] 是 Internet 上文件格式的两部分标识符。标识符最初是在 RFC 2046 中定义的,用于通过 SMTP 发送的电子邮件,但它们的使用已扩展到其他协议,例如 HTTP、RTP 和 SIP。这些类型被称为 MIME 类型,有时也称为 Content-types,在几个协议中的标头名称之后,其值就是这种类型。

文章还说

IANA 管理媒体类型的官方注册表

点击链接将带您到

其中包含您要查找的列表。请注意,除非您想了解特定文件格式的官方 mimetype 是什么,否则查看该列表几乎没有意义。

附带说明:如果您想验证/检测文件的 mime 类型,请查看我在中提供的代码

【讨论】:

  • 谢谢,这对我有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
相关资源
最近更新 更多