1、前台表单的设计
- form标签的method必须是post
- form标签必须设置==enctype==属性
取值:multipart/form-data
![a5f08568574cf1bf585d67d11363f2f2.png](https://i-blog.csdnimg.cn/blog_migrate/18cc650ea1b84a5ee8bf0a8617bfdb62.jpeg)
2、后台接收上传的文件
2.1、$_FILES
$_FILES预定义的变量中,保存着上传的文件相关信息。
![fe507ae89bec6d53d5a3301180b69108.png](https://i-blog.csdnimg.cn/blog_migrate/f4ada2645068d8d0a92af420d7b0939c.png)
说明:
myFile 表单的Name属性值,它的值又是一个数组
name 用户上传的原文件名
type 用户上传文件的类型
tmp_name 用户上传的文件在服务器上的一个临时保存位置
error 文件上传过程中遇到的错误代码。
![426a2d8622802cbd906da36eeec54fee.png](https://i-blog.csdnimg.cn/blog_migrate/5c4eb2796e42089e9832cd5335a79f73.jpeg)
size用户上传的文件大小,单位是字节
2.2、保存上传的文件
上传的文件会被保存到服务器的一个临时文件夹中,特点是,在php脚本执行结束后如果不处理这个文件,则会被删除。
所以在服务器处理文件上传的本质就是将临时文件夹中的临时文件,移到取其他的位置进行保存。
==move_uploaded_file(tmp,dest)==
说明:
tmp 临时文件
dest 最终要保存的目标文件
![8cd2d582892f7816d2ffc365687ef21a.png](https://i-blog.csdnimg.cn/blog_migrate/9b659c44b1415e7b38fda36efd258159.jpeg)
2.3、完善文件上传
- 随机生成文件名
![e1c630269c456f170ed0a172da7e2d3a.png](https://i-blog.csdnimg.cn/blog_migrate/e1029f354dd609f7c5acd9f5a80fb970.png)
限制上传文件的大小
![f07bfa275c213b26f1c8fb45a7a7944d.png](https://i-blog.csdnimg.cn/blog_migrate/fa9bebdf0fb335e82c54ec74e9f3744e.jpeg)
限制上传文件的类型
![555e88c1e5a08df79d2fb4595ca139c0.png](https://i-blog.csdnimg.cn/blog_migrate/a2a28f81915602a12e03853ecd5de79b.jpeg)
3.4、封装文件上传函数
<?
3、文件上传相关的配置
![31666105305a77c420411a505f055dfc.png](https://i-blog.csdnimg.cn/blog_migrate/68c89b6d37f37c21af6c2058472dbc40.jpeg)