PHP文件操作示例总结[文件上传、下载、分页]
本文说明了PHP文件的操作。分享给大家参考,如下:
1、文件上传
上传域:输入类型=“文件”普通文本框(文本、密码、文本区、单选按钮、复选框等。):以字节流的形式向服务器提交数据
文件:以二进制代码的形式提交文件非常简单,只需在表单标签中添加enctype='multipart/form-data '
!-例如-form action=' method=' post ' enctype=' multipart/form-data ' input type=' file ' name=' '/form客户端提交文件后,服务器用$_FILES接受它
所谓文件上传,就是把上面图片的临时文件移动到指定的目的地
使用函数move_uploaded_file(文件,新路径)返回布尔值
1.1 文件上传案例
//例如,move _ uploaded _ file($ _ files[' my file '][' tmp _ name '],' d :/upload/');1.2 防止上传文件过大
知识1GB==1024 mb1 MB==1024 kb1 kb==1024 byte
$ max _ size=3 * 1024 * 1024//约束为3Mif($ _ files[' my file '][' size ']$ max _ size){ echo '上传的图片大于3m ';退出;}//上传if(move _ uploaded _ file($ _ files[' my file '][' tmp _ name '],$ path)) {echo '上传成功';} else {echo '上传失败;}注意php.ini文件可以修改上传文件的限制:是否允许上传、上传的临时目录、文件的最大限制、一次上传的最大次数
1.3 防止文件被覆盖
1.我们在服务器端进行验证。当我们移动到目的地时,我们使用随机数来命名新的文件名,这可以避免文件名重复。2.按日期保存文件夹。
1.4 控制上传的文件类型
的一般要求是:图片在。jpg。巴布亚新几内亚gif格式为了防止文件后缀被修改然后上传,您可以借助php的扩展Finfo更准确地获得文件类型
//为了防止用户修改文件后缀,使用php的一个扩展名Finfo来实现# 1,在php.ini中打开php扩展extension=php_fileinfo.dll# 2,使用extension类获取上传文件的真实类型$ Finfo=new Finfo(fileinfo _ mime _ type);$ mime _ type=$ finfo-FILE($ _ FILES[' my FIle '][' tmp _ name ']);上传自己封装的文件类
/* *描述:文件上传类*作者:sgw *时间:2018-7-31 */类上传{ //成员属性private $ _ maxsize=2 * 1024 * 1024//上传文件的最大范围为2mprivate $ _ upload _ path=' upload/';//保存上传文件私有$ _前缀='odshen_ '的路径;//文件名的前缀private $ allow _ type=array('。jpg ','。png ','。gif ','。JPEG ');//允许上传的文件类型为private $ allow _ mime _ type=array(' image/JPEG ',' image/png ',' image/gif ',' image/jpg ');/** *设置私有属性* @ param[str]$ p[属性名]* @ param[mix]$ v[分配给属性的值] */public function _ _ set ($ p,$ v) {if (property _ exists ($ this,$ p)) {$ this-。}} /** *获取私有属性* @ param[str]$ p[属性名]*/public function _ _ get($ p){ if(property _ exists($ this,$ p)){ return $ this-$ p;}}/* * *上传文件方法* @ param[mix]$ file[上传文件] */public函数do upload($ file){//判断用户上传的文件大小$ max _ size=$ this-_ maxsize;//最大约束为2mif($ file[' size ']$ max _ size){ echo '上传文件太大,请重新上传';退出;} #防止上传的文件被覆盖$前缀=$ this-_前缀;//唯一文件名$filename=uniqid($prefix,true);//文件的后缀,截取上传文件名最后一点后的内容。strrhr $ ext=strrhr($ file[' name '],'.');//将上传的文件保存在不同的目录下,保存$ sub _ path=$ this-_ upload _ path . date(' ymd ')。'/';//upload/20180731/#如果当前目录不存在,需要先创建。绝对路径是$now_path=__DIR__。'/';$now_path=str_replace('\\ ','/',$now_path。$ sub _ path);if(!is _ dir($ now _ path)){ mkdir($ now _ path,0777,true);} #限制用户上传的文件类型如果(!In _ array ($ ext,$ this-allow _ type)){不支持echo '文件类型';退出;} #为防止用户修改文件的后缀,借助php的扩展Finfo,准确获取网络中每个文件的类型$ Finfo=new Finfo(fileinfo _ mime _ type);$ mime _ type=$ finfo-file($ file[' tmp _ name ']);if(!In _ array ($ mime _ type,$ this-allow _ mime _ type)){不支持echo '文件类型';退出;}//参数1:要移动的文件(临时文件)//参数2:目标//返回结果布尔类型if(move _ uploaded _ file($ file[' tmp _ name '],$ now _ path。$文件名。$ ext))。}else{ //echo“上传失败”;返回false} }}
2、文件下载
文件是借助第三方软件下载的,比如百度云盘、迅雷;如果文件很小,直接用php下载下面的方法就够了
//首先接收地址栏中传递的文件名,即下载哪个文件$ filename=$ _ GET[' filename '];如果($filename==''){未找到echo '文件,下载失败';退出;}//拼接文件的路径是$full_name='img/'。$文件名;//图片在windows系统下用gbk编码,php文件用utf-8编码。//通常php文件的编码需要修改为GBK $ full _ name=iconv ('UTF-8 ',' GBK ',$ full _ name);$ file size=file size($ full _ name);#[主要]开始下载,通过标题信息告诉浏览器我回复你的是文件资源//返回的文件标题(' content-type : application/octet-stream ');//根据字节大小返回标头(' accept-ranges :字节');//显示文件大小标题('内容长度: $ file size ');//这里弹出客户端的对话框,对应文件名头(' content-disposition :附件;文件名='。$ filename);//开始读取文件资源并响应浏览器$fp=fopen($full_name,' r ');while(!feof($fp)){ $data=fread($fp,1024);echo $数据;} fc lose($ FP);
3、分页类
与引导相结合/* * 分页显示数据*/class Page { private $ _ total;//总的记录数private $ _ pagesize//每页显示的记录数private $ _ pagenow//当前页码数private $ _ url//点击超链接时跳转的全球资源定位器(统一资源定位符)地址/** *设置设置私有的属性* @param [str] $p [属性名] * @param [mix] $v [给属性赋的值] */public function __set($p,$v) { if(property_exists($this,$ p)){ $ this-$ p=$ v;} } /** *获取获取私有属性* @param [str] $p [属性名]*/public function _ _ get($ p){ if(property _ exists($ this,$ p)){ return $ this-$ p;} } //动态创建分页导航条公共函数create() { //定义首页按钮//当前页高亮显示$ first _ active=$ this-_ page now==1?活动的":";$url=$this - _url .page=';$ first=1;$ PAGE=HTML ul class=' pagining ' Li class=' $ first _ active ' a href=' $ URL $ first ' rel='外部无跟随'首页/a/LihTMl;//创建中间的分页导航按钮//先计算目前有多少页==总的数据/每页显示的数据$ page _ count=ceil($ thi-_ total/$ thi-_页面大小);for($ I=$ this-_ page now-3;$ I=$ this-_ page now 3;$i ){ $active=$this-_pagenow==$i?活动的":";if($ I=1 | | $ I=$ page _ count){ continue;//跳出本次循环} $PAGE .=HTML Li class=' $ active ' a href=' $ URL $ I ' rel='外部无跟随' $ I/a/LihTMl;} //定义尾页按钮$ last _ active=$ this-_ page now==$ page _ count?活动的":";$PAGE .=HTML Li class=' $ last _ active ' a href=' $ URL $ page _ count ' rel='外部无跟随'尾页/a/Li/ULHTMl;//将创建的分页导航条返回返回$ PAGE}}更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《php文件操作总结》 、 《PHP目录操作技巧汇总》 、 《PHP常用遍历算法与技巧总结》 、 《PHP数据结构与算法教程》 、 《php程序设计算法总结》 及《PHP网络编程技巧总结》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。
版权声明:PHP文件操作示例总结[文件上传、下载、分页]是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。