【简单写法】多个文件上传(更新创建目录)
作者: thtomatic 分类: php笔记 评论: [ 0 ] 条 浏览: [ 1176 ] 次
html代码:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <form action="upload.php" method="post" enctype="multipart/form-data" > <input type="hidden" name="MAX_FILE_SIZE" value="1000000"/><!--“君子的约定”最大的文件尺寸(1000000约等于1MB)--> pic:<input type="file" name="pic[]" value=""/><br/> pic:<input type="file" name="pic[]" value=""/><br/> pic:<input type="file" name="pic[]" value=""/><br/> pic:<input type="file" name="pic[]" value=""/><br/> <input type="submit" value="upload"/><br/> </form>
PHP代码:
<?php header("Comtent-Type:text/html;charset=UTF-8"); error_reporting(E_ALL^E_NOTICE^E_WARNING);//取消报错(创建目录后的报错) /*echo "<pre>"; print_r($_FILES); echo "</pre>"; 输出为: Array ( [pic] => Array ( [name] => Array ( [0] => cklogo.png [1] => IMG_0002.JPG [2] => IMG_2963.JPG [3] => IMG_3183.JPG ) [type] => Array ( [0] => image/png [1] => image/jpeg [2] => image/jpeg [3] => image/jpeg ) [tmp_name] => Array ( [0] => C:\Windows\php9CCE.tmp [1] => C:\Windows\php9CCF.tmp [2] => C:\Windows\php9CD0.tmp [3] => C:\Windows\php9CD1.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 ) [size] => Array ( [0] => 2871 [1] => 199274 [2] => 46627 [3] => 130947 ) ) ) 下方的第一步、第二步、第三步、第四步判断都可以省略只是不安全而已 */ //检测是否有创建的文件夹,如果有就使用,没有就创建 $dir='./'.date("Ymd"); function newDir($dir){ if(!file_exists($dir)); mkdir($dir); } //获取数组中的个数 $num=count($_FILES['pic']['name']); //循环$num次(下方的每个数组的数值后面都要跟$i) for($i=0;$i<$num;$i++){ //第一步:判断错误 if($_FILES['pic']['error'][$i]>0){ //加入$i switch ($_FILES['pic']['error'][$i]) { //加入$i case 1: echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br/>"; break; case 2: echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值<br/>"; break; case 3: echo "文件只有部分被上传<br/>"; break; case 4: echo "没有文件被上传<br/>"; break; case 6: echo "找不到临时文件夹<br/>"; break; case 7: echo "文件写入失败<br/>"; break; default: echo "未知错误<br/>"; } continue; } //第二步:判断类型 //获取文件名“.”后面的字符 $arr=explode(".",basename($_FILES['pic']['name'][$i])); //加入$i //获取最后一个“.”后面的字符即使文件后缀 $hz=array_pop($arr); //设置支持的文件后缀 $allowtype=array("gif","png","jpg","jpeg"); //判断后缀是否在规定范围内 if(!in_array($hz,$allowtype)){ echo "上传的类型不合法<br/>"; continue; } //第三步:判断大小 //设置传输最大值为1000000kb; $maxsize=1000000; //判断是否超出了规定的大小 if($_FILES['pic']['size'][$i]>$maxsize){ //加入$i echo "上传的文件超过了".$maxsize; continue; } //第四步:上传的文件名一定要设置 //获得文件临时存储的名字 $tmpfile=$_FILES['pic']['tmp_name'][$i]; //加入$i //创建目录 newDir($dir); //规定随机的名字(年月日时分秒+4位随机数) $srcname=date("YmdHis").rand(1000,9999).".".$hz; // KING //KING2145564.JPG // FGGDGG //SAFEMBSHF4235. //将临时目录下的上传的文件,复制到我指定目录下,指定的名字就可以完成上传 if(move_uploaded_file($tmpfile,$dir."/".$srcname)){ echo "上传{$_FILES['pic']['name'][$i]}成功<br/>"; }else{ echo "上传失败<br/>"; } }
其实多个文件上传
就是在hml文件中增加多个"type=file"的输入框,将每个输入框的name属性定义为相同的数组形式
然后用PHP获取数组中的个数,使用for循环即可
用到的函数:
count — 计算数组中的单元数目或对象中的属性个数
int count ( mixed $var [, int $mode ] )
版权所有:《thtomatic》 => 《【简单写法】多个文件上传(更新创建目录)》
本文地址:https://ask.mykeji.net/phpnotes/Multiple_file_upload_simple_notation.html
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。
发表评论: