文件上传分为两个部分,HTML显示部分和PHP处理部分,HTML部分主要是让用户来选择所要上传的文件,然后通过PHP中的$_FILES,我们可以把文件上传到服务器的指定目录。
1.客户端页面
客户端的配置
1.表单页面
2.表单发送方式为post
3.表单form中添加enctype="multipart/form-data"
<body> <form action="doaction.php" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit" value="上传"> </form> </body>
2.处理页面doaction
$_FILES:文件上传变量
print_r($_FILES);
$_FILES:保存着上传文件的信息
1.name:上传文件的名称
2.type:上传文件的MIME类型
3.tmp_name:上传到服务器上的临时文件名
4.size:上传文件的大小
5.error:上传文件的错误号
$filename=$_FILES['myfile']['name']; $type=$_FILES['myfile']['type']; $tmp_name=$_FILES['myfile']['tmp_name']; $size=$_FILES['myfile']['size']; $error=$_FILES['myfile']['error'];
将服务器上的临时文件移动到指定文件夹
1.move_uploaded_file(临时文件名,‘文件夹名'.$filename); 将服务器上的临时文件移动到指定文件夹,叫什么名字($filename),移动成功返回true,移动失败返回false。
move_uploaded_file($tmp_name,"wenjian/".$filename);
2.copy("临时文件名","文件名".$filename) 将服务器上的临时文件拷贝到指定文件夹
文件上传配置
file_uploads = on,支持HTTP上传 upload_tmp_dir= ,临时文件保存的目录 upload_max_filesize=2M,允许上传文件的最大值 max_file_uploads=20,允许一次上传的最大文件数 post_max_size=8M,post方式发送数据的最大值
3.错误信息处理
上传文件失败时,判断一下错误号,只有为0或者UPLOAD_ERR_OK,才没有错误发生,上传成功
下面是抓取错误
if($error==UPLOAD_ERR_OK) { if(move_uploaded_file($tmp_name,"wenjian/".$filename)) { echo "文件".$filename."上传成功"; }else { echo "文件".$filename."上传失败"; } } else { //匹配错误信息 switch($error) { case 1: echo "上传文件超过了PHP配置文件中upload_max_filesize选项的值"; break; case 2: echo "超过了表单MAX_FILE_SIZE的限制大小"; break; case 3: echo "文件部分被上传"; break; case 4: echo "没有选择上传文件"; break; case 6: echo "没有找到临时目录"; break; case 7: case 8: echo "系统错误"; break; } } "color: #ff0000">4.上传文件限制《客户端限制:》
通过表单隐藏域限制上传文件的最大值
<input type="hidden" name="MAX_FILE_SIZE" value="字节数">通过accept属性限制上传文件的类型
<input type="file" name="myfile" accept="文件的MIME类型">《服务器端限制》
1.限制上传文件大小
2.限制上传文件类型
3.检测是否为真实图片类型
4.检测是否为HTTP POST方式上传
5.判断服务器上存储的文件夹在不在
6.防止重名产生覆盖
<"myfile"]; $maxsize=2097152; //写最大的字节数,自己算 $allowext=array('jpeg','jpg','pnd','gif','wbmp'); //定义一下允许的上传文件类型 //1.判断错误号 if($fileinfo['error']==0) { //1.判断上传文件大小 if($fileinfo['size']>$maxsize) { exit('上传文件过大'); } //2.判断上传文件类型是不是在规定类型中 $ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上传文件扩展名 if(!in_array($ext,$allowext)) // 判断上传文件的扩展名是不是在定义类型中 { exit('非法文件类型'); } //3.判断文件是否是通过HTTP POST方式上传上来的 if(!is_uploaded_file($fileinfo['tmp_name'])) { exit('文件不是通过HTTP POST方式上传上来的'); } //4.检测是否为真实的图片类型,而不是认为改动的 $flag=true; if($flag) { if(!getimagesize($fileinfo['tmp_name'])) { echo "不是真实的图片类型"; } } $path='uploads'; //服务器上存储文件的文件名 //5.判断服务器上存储的文件夹在不在 if(!file_exists($path)) { mkdir($path,0777,true);//不存在就创建一个目录 chmod($path,0777);//加一个权限 } //6.确保文件名唯一,防止重名产生覆盖 $uniname=md5(uniqid(microtime(true),true)).'.'.$ext; //通过MD5加密等措施给文件名取名 $destination=$path.'/'.$uniname; if(move_uploaded_file($fileinfo['tmp_name'],$destination)) //上传文件 { echo "文件上传成功"; }else { echo "文件上传失败"; } }else { //匹配错误信息 switch($error) { case 1: echo "上传文件超过了PHP配置文件中upload_max_filesize选项的值"; break; case 2: echo "超过了表单MAX_FILE_SIZE的限制大小"; break; case 3: echo "文件部分被上传"; break; case 4: echo "没有选择上传文件"; break; case 6: echo "没有找到临时目录"; break; case 7: case 8: echo "系统错误"; break; } } "color: #ff0000">5.完整的上传文件步骤第一步:表单页内容
<body> <form action="doaction.php" method="post" enctype="multipart/form-data"> //通过表单隐藏域限制上传文件的最大值 <input type="hidden" name="MAX_FILE_SIZE" value="字节数"> //通过accept属性限制上传文件的类型 <input type="file" name="myfile" accept="文件的MIME类型"> </form> </body>第二步:处理界面。定义变量
<"htmlcode">//服务器端限制 <"myfile"]; $maxsize=2097152; //写最大的字节数,自己算 $allowext=array('jpeg','jpg','pnd','gif','wbmp'); //定义一下允许的上传文件类型 //1.判断错误号 if($fileinfo['error']==0) { //1.判断上传文件大小 if($fileinfo['size']>$maxsize) { exit('上传文件过大'); } //2.判断上传文件类型是不是在规定类型中 $ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上传文件扩展名 if(!in_array($ext,$allowext)) // 判断上传文件的扩展名是不是在定义类型中 { exit('非法文件类型'); } //3.判断文件是否是通过HTTP POST方式上传上来的 if(!is_uploaded_file($fileinfo['tmp_name'])) { exit('文件不是通过HTTP POST方式上传上来的'); } //4.检测是否为真实的图片类型,而不是认为改动的 $flag=true; if($flag) { if(!getimagesize($fileinfo['tmp_name'])) { echo "不是真实的图片类型"; } } $path='uploads'; //服务器上存储文件的文件名 //5.判断服务器上存储的文件夹在不在 if(!file_exists($path)) { mkdir($path,0777,true);//不存在就创建一个目录 chmod($path,0777);//加一个权限 } //6.确保文件名唯一,防止重名产生覆盖 $uniname=md5(uniqid(microtime(true),true)).'.'.$ext; //通过MD5加密等措施给文件名取名 $destination=$path.'/'.$uniname; $destination=inocv("UTF-8","gb2312",$destination); //如果上传的文件名中有汉字,需要转码一下,用inocv函数,把utf-8转为gb2312. if(move_uploaded_file($fileinfo['tmp_name'],$destination)) //上传文件 { echo "文件上传成功"; }else { echo "文件上传失败"; } }else {第四步:匹配错误信息
switch($error) { case 1: echo "上传文件超过了PHP配置文件中upload_max_filesize选项的值"; break; case 2: echo "超过了表单MAX_FILE_SIZE的限制大小"; break; case 3: echo "文件部分被上传"; break; case 4: echo "没有选择上传文件"; break; case 6: echo "没有找到临时目录"; break; case 7: case 8: echo "系统错误"; break; } } ?>以上所述是小编给大家介绍的PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]