文件上传
上传原理
将本地的文件复制一份传送到网络的服务器中储存
Ø 通过浏览器选择本地文件
Ø 通过互联网传送到网络服务器中的临时目录
(系统的临时目录temp格式,其实就是垃圾目录,为了防止病毒,系统会自动将上传的文件随机改名后缀为.tmp。这个文件是不可以运行的文件,当提交的php脚本运行结束后,如果没有移动走该临时文件,那么系统的临时文件就会自动删除该文件)
Ø 如果上传到临时目录中没有出错,则把文件从临时目录中移动到www目录下将其改好名字。即为实现文件的上传
上传需注意
Ø HTML表单部分
n 上传文件时,传输方式必须问post方式
n 需要指定表单输出编码格式:enctype="multipart/form-data"
Ø PHP页面部分
如果是文件上传,那么上传的文件在php脚本中不能用$_POST来接受, 必须要用$_FILES来接受,其他内容依然用$_POST来接受
Ø PHP配置文件相关的选项
upload_max_filesize = 2M 允许上传文件大小的最大值设置
file_uploads = On 允许文件上传的设置
upload_tmp_dir ="c:/wamp64/tmp" 文件上传的临时目录的设置
max_file_uploads = 20 允许最大上传文件个数的设置
post_max_size = 8M post最大传输内容的最大值设置
注意:upload_max_filesize 设置的值不允许超过post_max_size设置的值
上传中需考虑
Ø 判断是否上传成功,判断错误号,是否从客户端上传到系统临时目录过程中成功
Ø 判断上传文件的类型是否符合要求
Ø 判断上传文件的大小时候符合要求
Ø 创建上传成功后保存的目录
Ø 上传上来的图片不能重名 重新命名
Ø 移动文件(从系统临时文件目录中移动到指定的目录中并且图片要求重命名)
上传到临时系统文件中错误号
可查看手册post上传方法来整理
文件的类型:可查看MIME类型
文件移动时:
move_uploaded_file() 将长传的文件移动到新位置
@param1 原路径
@param2 需要移动的路径
返回值:成功返回true 失败返回false
die(); 与break;
函数中不要用以上两位函数,用return代替
文件下载
就是将服务器中的文件复制一份保存到本地即为下载
Ø 下载需要的三行代码
//声明要下载文件的类型
header('Content-type: image/jpeg');
//对下载文件进行描述并且制定下载文件的名称
header('Content-Disposition:attachment;filename="下载文件的名称.jpg");
//读取需要下载的文件
readfile('./文件目录/文件名.后缀');
Ø IE浏览器中编码问题
iconv(); 字符集按要求的字符编码来转换
@param1 原字符集
@param2 需要转换成那种字符集
@param3 那个字符串需要转换
返回值:返回转换后的字符串 失败返回false
Ø 设置页面字符集
header('Content-type:text/html;charset=utf-8');
使用header做条件注意:
尽量不要在header前面输出,有输出不会报错,但是尽量不要这么做,因为不符合常理,在php版本小于5.3之前不允许header前面有输出
注意:header的功能有很多需要一一了解
header跳转
header('location:需要跳转的路径');