文件上传
原理
文件上传:文件从用户本地电脑通过传输方式(Web表单)保存到服务器所在电脑指定的目录下。
1、增加文件上传的表单:浏览器请求一个服务器的HTML脚本(包含文件上传表单)
2、用户从本地选择一个文件(点击上传框(按钮))
3、用户点击上传:文件会通过物联网传输到服务器上
4、服务器操作系统会将文件保存到临时目录:是以临时文件格式保存(windows下tmp)
5、服务器脚本开始工作:判断文件有效
6、服务器脚本将有效文件从临时目录移动到指定的目录下(完成)
表单写法
- method属性:表单提交方式必须为post
- enctype属性:form表单属性,主要是规范表单数据的编码方式
- 上传表单:file表单
$_FILES变量详解
- name:用户电脑上实际存在的名字(实际用来保留后缀)
- tmp_name:临时保存的路径(实际用来给PHP后期使用)
- type:MIME类型
- error:文件上传的代号
- size:文件大小
移动临时文件到目标位置
文件上传后会保存到$_FILES中,name访问文件信息的形式就是$_FILES['表单 name 属性值']['信息']
- 判断是否为上传的文件:is_uploaded_file()
- 移动文件:move_uploaded_file()
多文件上传
文件上传后续问题
封装文件上传函数
功能:上传文件
条件:条件判断
- 文件类型是否合适?外部指定mime类型
- 文件存储到什么位置?外部指定
- 文件格式限制(文件后缀)?外部限定
- 文件大小限制?外部指定
结果:实现文件上传
- 成功:结果能够在以后看到:需要将文件的路径和文件名字返回(存储到数据库)
- 失败:返回false,指定错误原因(引用参数)
- 封装出一个函数
- 判断文件是否有效
- 判断保存路径是否有效
- 判断文件本身上传的过程中是否有错误:error
- 文件类型的处理:通过MIME匹配即可
- 文件格式的处理:后缀名的问题
- 移动到指定目录
- 命名冲突的处理:长传同名文件?中文名字怎么办?