PHP中文件上传与文件下载

文件上传

上传原理

将本地的文件复制一份传送到网络的服务器中储存

 

Ø 通过浏览器选择本地文件

Ø 通过互联网传送到网络服务器中的临时目录

(系统的临时目录temp格式,其实就是垃圾目录,为了防止病毒,系统会自动将上传的文件随机改名后缀为.tmp。这个文件是不可以运行的文件,当提交的php脚本运行结束后,如果没有移动走该临时文件,那么系统的临时文件就会自动删除该文件)

Ø 如果上传到临时目录中没有出错,则把文件从临时目录中移动到www目录下将其改好名字。即为实现文件的上传

 

 

上传需注意

Ø HTML表单部分

上传文件时,传输方式必须问post方式

需要指定表单输出编码格式: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:需要跳转的路径');

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章