【简单写法】多个文件上传(更新创建目录)

  作者: 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
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。


发表评论:

    55.78ms