php上传文件那些事
来源:互联网 发布:sql笔试题及答案 编辑:程序博客网 时间:2024/06/04 19:26
有好几天没有更新博文了,最近博主去学车去了,晒的可黑了。回到正题,本次,博主给大家带来php上传文件。
- 客户端
在网页中,必须采用post
方式来上传文件,并且必须设置表单的enctype
属性为multipart/form-data
,还需要设置input标签
的type
属性为file
,name
属性中的内容用于服务器端进行标识,定义代码如下。
<form action="01.php" method="post" enctype="multipart/form-data"> <input type="file" name="pic"/><br/> <input type="submit" value="提交"/></form>
服务器端获取上传文件信息
当客户端提交表单后,服务器端就可以获取上传文件的信息了。上传文件的信息都会存储到$_FILES
这样的一个全局数组中,我们可以打印数组查看结果。代码
<?phpprint_r($_FILES);?>
打印结果
打印结果如下,是一个数组,pic
是客户端的标识,name
下标指的是上传文件的文件名,type
下标指的是上传文件的类型,tmp_name
下标指的是上传的文件在服务器端存放的临时文件名,error
下标是上传文件错误的表示,可用于检测文件是否上传,以便找到错误的原因,size
下标是上传文件的大小,单位是字节。
- 保存文件
上传文件后,文件被上传到服务器端用于存放上传文件的临时目录中,如果在php代码执行结束后并没有将文件保存到其他位置,那么该临时文件将会被删除。所以,文件上传之后,都应该进行移动操作,将文件保存到其他位置。
<?phpecho move_uploaded_file($_FILES['pic']['tmp_name'], "./".$_FILES['pic']['name'])?"ok":"fail";?>
- 随机文件名及按日期存储
在做项目时,在处理文件上传时,我们应该这样做处理,使用随机字符串作为文件名,这样后面上传的文件就不会把之前上传的同名文件给覆盖了;还有一个就是让文件夹按日期动态生成,这样比较方便管理员进行管理。
<?php/** * 生成随机文件名,按日期存储 * @author webbc */$fname = rand(10000,99999);//随机文件名$ext = strrchr($_FILES['pic']['name'],'.');//截取文件的扩展名$path = './'.date('Y/m/d');//文件存储的路径//如果目录不存在,就创建目录if(!is_dir($path)){ mkdir($path,0777,true);}$saveFile = $path.'/'.$fname.$ext;//保存的文件名echo move_uploaded_file($_FILES['pic']['tmp_name'],$saveFile)?"ok":"fail";?>
上面这段代码的含义是,先生成随机字符串作为文件名,然后获取上传文件的扩展名,然后根据日期动态生成目录,然后保存文件。
- 项目中的文件上传
封装常用函数
<?php/** * 创建上传文件的路径 * @return str/bool 上传文件的目录 */function createDir(){ $path = '/upload/'.date('Y/m/d'); $fpath = ROOT.$path; if(is_dir($fpath) || mkdir($fpath,0777,true)){ return $path; }else{ return false; }}/** * 随机字符串函数,作为文件名 * @param int $num 指定所要的随机字符串长度 * @return str 随机字符串 */function randStr($num=6){ $str = str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789'); return substr($str,0,$num);}/** * 获取指定文件的扩展名,包括. * @param str $file 文件名 * @return str 文件扩张名 */function getExt($file){ return strchr($file,'.');}?>
使用
注意:如果要保存到数据库的话,应当保存的是文件的相对路径
<?php if($_FILES['pic']['name'] !== '' && $_FILES['pic']['error'] == 0){//判断是否在上传 $file = createDir().'/'.randStr().getExt($_FILES['pic']['name']);//生成文件名 move_uploaded_file($_FILES['pic']['tmp_name'] , ROOT.$file);//保存文件 ...可进行数据库操作... }?>
- 上传文件的相应配置
在php配置文件中,有许多关于上传文件的配置,我们应该也要熟悉。file_uploads = On/Off
:代表文件上传是否可用
upload_tmp_dir="D:/Program Files (x86)/wamp/tmp" :代表文件保存到服务器的临时目录
upload_max_filesize = 2M :上传文件的最大限制
记得配置好以后,重启apache服务,希望这篇文章能给大家带来帮助。
0 0
- php上传文件那些事
- 文件上传那些事儿
- 文件上传那些事儿
- php 上传文件文件
- PHP上传文件
- PHP文件的上传
- php上传文件
- PHP文件上传
- php上传文件
- PHP上传文件
- [PHP]文件上传处理
- php多文件上传`
- PHP实现文件上传
- PHP文件上传
- PHP文件上传
- 关于php文件上传
- PHP文件上传代码
- PHP文件上传
- 安卓项目之淘忆2.0的代码实现之注册功能(修改版)
- 搜索引擎检索的一点经验
- Java 注解的作用与使用
- 安装数据库提示无法解析机器名处理
- Js中的prototype
- php上传文件那些事
- HDU 1002 ????
- Android Fragment应用实战
- POJ 1182 食物链 *
- 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置
- 蛇形填数
- hdu5750Dertouzos
- java基础之访问修饰符
- EasyUI_Datagrid编辑-键盘上下键选择行(一)