本文结合实例分析了PHP文件的上传操作。分享给大家参考,如下:
文件上传
当浏览器向服务器发出请求时发生。
对于浏览器来说,文件只是表单中的一种特殊类型的数据。
浏览器表单中有两种类型的数据:
字符串类型(字节流编码)
文件类型(二进制代码),文件是表单数据的一部分
服务器角度:
接受浏览器请求时处理表单中的数据。根据不同的数据类型使用不同的处理方法:
字符串类型,存储在$_POST变量(内存)中
文件数据,存储在上传临时目录中
提交表单时,默认情况下浏览器的行为如下:
表单中的所有内容都是字符串类型的。即使添加了文件字段,也有必要在表单上添加属性,以通知浏览器上传的不仅仅是字符串类型的数据。enctype=“多部分/表单数据”
Body formaction=' upload.php '方法=' post ' enctype=' multipart/form-data ' input type=' file ' name=' file '/br input type=' submit ' value=' submit '/form/body PHP服务器在接收到文件类型(属于
;HTTP上传文件的临时目录(如果没有,将使用系统默认值;指定)。http://php.net/upload-tmp-dir;上传=永久存储临时文件
Move _ uploaded _ file (src _ URL,goa _ URL) $ _ files,存储上传文件的信息,包括临时地址
错误类型:
0-1-2-3-4-6-7
0表示没有错误
1表示文件比php设置大
;上传文件的最大允许大小。http://php.net/upload-max-filesizeupload_max_filesize=2 m2表示文件大于表单设置max_file_size
输入类型='隐藏'名称=' max _ file _ size '值=' 1024' 3表示文件上传不完整。
4表示没有上传文件
5表示逻辑上传0字节文件(空文件)。
6表示未找到临时上传目录(权限不足)
7表示文件写入失败(磁盘空间、权限)
php允许的最大上传文件数
;通过单个请求可以上传的最大文件数max _ file _ uploads=20 post有一个最大限制
一旦超过,php就不能正确处理帖子和文件。该值可能为空
;PHP将接受的最大开机自检数据大小。http://php.net/post-max-sizepost_max_size=8m型试验
后缀名称和mime由浏览器提供,文件信息检查(函数过程和面向对象)需要通过php的扩展fileinfo来完成
;扩展名=php_fileinfo.dll
$ fin fo=new fin fo(FILEINFO _ MIME _ TYPE);$ mine _ type=$ finfo-file($ file[' tmp _ name ']);分子目录存储上传的文件
原则:业务逻辑、文档数量和时间
创建目录mkdir()
检查目录是_dir()
?phpup load($ _ FILES[' FIle ']);函数上传($ file){ if($ file[' error ']!=0){返回false }//3M $ max _ size=3145728;if($ max _ size $ file[' size ']){ return false;} //设置一个后缀名与哑剧的映射关系$type_map=array(' .jpeg '=数组(' image/jpeg ',' image/pjpeg '),' .jpg'=array('image/jpeg ',' image/pjpeg '),' .png'=array('image/png ',' image/x-png '),' .gif '=array(' image/gif ');//后缀$allow_ext_list=array(' .jpeg ',' .png ',' .jpg’);$ ext=strtolow(strchr($ file[' name '],'.'));if(!in_array($ext,$allow_ext_list)){ echo '不支持该图片格式;返回false }//MIME $ allow _ MIME _ list=array();foreach($ allow _ ext _ list as $ val){ $ allow _ mime _ list=array _ merge($ allow _ mime _ list,$ type _ map[$ val]);} //浏览器提供信息坚持$ allow _ mime _ list=array _ unique($ allow _ mime _ list);if(!in_array($file['type'],$allow_mime_list)){ echo '不支持该图片格式;返回false} //php自身检查$ file _ MIME=new Finfo(FILEINFO _ MIME _ TYPE);$ mime=$ file _ mime-file($ file[' tmp _ name ']);if(!in_array($mime,$allow_mime_list)){ echo '不支持该图片格式;返回false} //目录存储$up_loadpath=' ./';$ sub _ dir=date(' Ymdh ');if(!is_dir($up_loadpath).$sub_dir)){ mkdir($up_loadpath).$ sub _ dir);} $ prefix=' bee _ $ name=uniqid($ prefix,true).$ extif(move _ uploaded _ file($ file[' tmp _ name '],$up_loadpath .$sub_dir$name)){ echo '上传成功;返回$ name}else{ echo '上传失败;返回false}}更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《php文件操作总结》 、 《PHP数组(Array)操作技巧大全》 、 《PHP基本语法入门教程》 、 《PHP运算与运算符用法总结》 、 《php面向对象程序设计入门教程》 、 《PHP网络编程技巧总结》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。