为了方便管理这些上传的文件,我们通常会将上传的文件保存到uploads目录下面
防止上传文件过大
思路:首先给定一个文件的最大限制,然后再拿上传的文件的大小 和 最大的限制进行比较,文件大小单位是字节,字节之间的转换:1024
1024字节 = 1KB
1024KB = 1MB
1024MB = 1GB
修改一下表单的提交地址:
确实阻止了文件的上传,但是还有一个小问题:
虽然上传时,拦截了,但是该文件还是在临时的文件夹中走了一圈,如何实现,如果文件过大的话,连临时目录都不让其进去
需要修改php的配置文件了,将其最大的限制修改为2MB,这样,让我们上传的文件大小超过2MB,就无法进入到临时目录
测试一把:
错误指的是提交的表单内容,超过了表单提交的最大限制,所以为了演示效果,我们临时将表单提交的最大限制修改为80MB
防止文件被覆盖
如果多个用户,同时上传文件,如果文件的名字固定死的话,所有用户上传的文件名字都会一样,将来就很麻烦了
思路:上传成功之后,给文件命名时,取一个唯一的、随机数
分目录存放上传的文件
为什么要分目录存储?
如果上传的文件不加任何修改,直接保存到uploads目录的话,uploads目录就会出现很多文件,不便于查找
通常我们会按照日期的格式分目录保存
控制上传的文件类型
假设有这样一个需求:上传用户的头像
这个时候我们只能上传图片(jpg、png、gif),所以我们就应该上传的时候做一个判断
思路:首先,定义一个数组保存支持的上传的文件的类型,然后再拿上传的文件的实际类型和支持的类型进行比较
但是,上面的代码存在一个小问题:
如果手动的把一个excel文件的后缀修改为.jpg了。’
上传的时候,就会把php蒙混过去,如果用户上传的是脚本(js等),就会很危险
所以我们还要做一个更加严格的过滤
需要借助PHP提供的类(php 内置的一个类)finfo,在手册的位置:
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/10071.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除