使用php查找正在上传的文件的扩展名

mka*_*han 1 php file-upload

我在网站上使用PHP.我必须让用户上传他们的照片.现在,照片可以是jpeg或png或gif格式.我的问题是我通过唯一的用户ID识别用户,所以我想将图片保存为:userid.jpg或userid.png等.现在,我如何找到用户使用php选择的文件的扩展名?

Gav*_*Gav 6

我不会依赖访问者提供的文件扩展名.相反,问问文件本身是什么(这仍然是欺骗,但它不太可能;你也不必怀疑扩展名是3或4个字符(例如jpeg,jpg)).尝试:

if ($_FILES['avatar']['type'] == "image/gif")
if ($_FILES['avatar']['type'] == "image/jpeg")
if ($_FILES['avatar']['type'] == "image/png")
Run Code Online (Sandbox Code Playgroud)

它们更可靠.

  • 没有!这样做要非常小心.确保扩展名也是相关类型(gif/jpg/png),而不是可执行文件(如.php). (3认同)

Pas*_*TIN 5

您可以使用fileinfo(PHP> = 5.3),或者如果您使用的是旧版本的PHP,而不是依赖客户端发送的扩展,mime_content_type

一旦你有文件的mime类型,它只是一个映射的问题(如'image/png'=>'png')

(出于安全原因,实际上应该更好;如果我没记错的话,$ _FILES ['...'] ['type']由客户端发送,并且可以伪造)