多文件上传php怎么写

方法一:当多文件上传表单中多个上传文件的name属性为“pic[]”形式时,也即表单为这种形式。
HTML代码:
1    <form action="" method="post" enctype="multipart/form-data">    
2    <input type="hidden" name="MAX_FILE_SIZE" value="">    
3    <input type="file" name="pic[]" /><br><br>    
4    <input type="file" name="pic[]" /><br><br>    
5    <input type="file" name="pic[]" /><br><br>    
6    <input type="file" name="pic[]" /><br><br>    
7    <input type="submit" value="upload"/>    
8    </form>    
PHP代码:
01    <?php    
02    //1.获取要上传文件的信息    
03    $up_info=$_FILES['pic'];    
04         
05    $ob_path="../system";    
06         
07    $typelist=array("image/gif","image/jpeg","image/pjpeg","image/png"); //定义运行的上传文件类型    
08         
09         
10    for($i=0;$i<count($up_info['name']);$i++){ //foreach 循环处理多个文件上传    
11        //2.判断文件是否上传错误    
12         
13        if($up_info['error'][$i]>0){    
14            switch($up_info['error'][$i]){    
15                case 1:    
16                    $err_info="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";    
17                    break;    
18                case 2:    
19                    $err_info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";    
20                    break;    
21                case 3:    
22                    $err_info="文件只有部分被上传";    
23                    break;    
24                case 4:    
25                    $err_info="没有文件被上传";    
26                    break;    
27                case 6:    
28                    $err_info="找不到临时文件夹";    
29                    break;    
30                case 7:    
31                    $err_info="文件写入失败";    
32                    break;    
33                default:    
34                    $err_info="未知的上传错误";    
35                    break;    
36            }    
37            continue($err_info);    
38        }    
39         
40         
41        //3.判断文件上传的类型是否合法    
42         
43        if(!in_array($up_info['type'][$i],$typelist)){    
44            continue('文件类型错误!'.$up_info['type'][$i]);    
45        }    
46         
47        //4.上传文件的大小过滤    
48         
49        if($up_info['size'][$i]>1000000){    
50            continue('文件大小超过1000000');    
51        }    
52         
53         
54        //5.上传文件名处理    
55         
56        $exten_name=pathinfo($up_info['name'][$i],PATHINFO_EXTENSION);    
57         
58        do{    
59            $main_name=date('YmHis'.'--'.rand(100,999));    
60            $new_name=$main_name.'.'.$exten_name;    
61        }while(file_exists($to_path.'/'.$new_name));    
62         
63         
64         
65        //6.判断是否是上传的文件,并执行上传    
66         
67        if(is_uploaded_file($up_info['tmp_name'][$i])){    
68         
69            if(move_uploaded_file($up_info['tmp_name'][$i],$ob_path.'/'.$new_name)){    
70                echo '文件上传成功!';    
71            }else{    
72                echo '上传文件移动失败!';    
73            }    
74        }else{    
75            echo '文件不是上传的文件';    
76        }    
77         
78    } //for循环的括号    
方法二:当多文件上传表单中多个上传文件的name属性为“pic,text,doc,pdf”形式时
也即表单为这种形式:
1    <form action="" method="post" enctype="multipart/form-data">    
2    <input type="hidden" name="MAX_FILE_SIZE" value="">    
3    <input type="file" name="pic" /><br><br>    
4    <input type="file" name="text" /><br><br>    
5    <input type="file" name="doc" /><br><br>    
6    <input type="file" name="pdf" /><br><br>    
7         
8    <input type="submit" value="upload"/>    
9    </form>    
01    //1.获取要上传文件的信息    
02    $up_info=$_FILES;    
03         
04    $ob_path="..\system";    
05         
06    $typelist=array("image/gif","image/jpeg","image/pjpeg","image/png"); //定义运行的上传文件类型    
07         
08         
09         
10    foreach($up_info as $k_name=>$value){ //用foreach循环 处理多个文件的上传    
11        //2.判断文件是否上传错误    
12         
13        if($up_info[$k_name]['error']>0){    
14            switch($up_info['error'][$i]){    
15                case 1:    
16                    $err_info="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";    
17                    break;    
18                case 2:    
19                    $err_info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";    
20                    break;    
21                case 3:    
22                    $err_info="文件只有部分被上传";    
23                    break;    
24                case 4:    
25                    $err_info="没有文件被上传";    
26                    break;    
27                case 6:    
28                    $err_info="找不到临时文件夹";    
29                    break;    
30                case 7:    
31                    $err_info="文件写入失败";    
32                    break;    
33                default:    
34                    $err_info="未知的上传错误";    
35                    break;    
36            }    
37            continue($err_info);    
38        }    
39         
40         
41        //3.判断文件上传的类型是否合法    
42         
43        if(!in_array($up_info[$k_name]['type'],$typelist)){    
44            continue('文件类型错误!'.$up_info[$k_name]['type']);    
45        }    
46         
47        //4.上传文件的大小过滤    
48         
49        if($up_info[$k_name]['size']>100000){    
50            echo '文件大小超过**';    
51            continue;    
52        }    
53         
54         
55        //5.上传文件名处理    
56         
57        $exten_name=pathinfo($up_info[$k_name]['name'],PATHINFO_EXTENSION);    
58         
59        do{    
60            $main_name=date('YmHis'.'--'.rand(100,999));    
61            $new_name=$main_name.'.'.$exten_name;    
62        }while(file_exists($to_path.'/'.$new_name));    
63         
64         
65        //6.判断是否是上传的文件,并执行上传    
66         
67        if(is_uploaded_file($up_info[$k_name]['tmp_name'])){    
68         
69            if(move_uploaded_file($up_info[$k_name]['tmp_name'],$ob_path.'/'.$new_name)){    
70                echo '文件上传成功!';    
71            }else{    
72                echo '上传文件移动失败!';    
73            }    
74        }else{    
75            echo '文件不是上传的文件';    
76        }    
77         
78    } //for循环的括号    
方法三:先定义单个文件上传的函数,再循环调用这个函数,每次传入一个文件的上传信息,也可以到达多文件上传的目的,而且这种方式,更容易理解。
1    <form action="" method="post" enctype="multipart/form-data">    
2    <input type="hidden" name="MAX_FILE_SIZE" value="">    
3    <input type="file" name="pic1" ><br>    
4    <input type="file" name="pic2"><br>    
5    <input type="file" name="pic3"><br>    
6    <input type="submit" value="upload">    
7    </form>    
001    /*    
002    *单文件上传函数    
003    *@param array $up_info 记录上传文件信息的超全局数组    
004    *@param string $to_path 上传文件的目标路径    
005    *@param array $typlist 允许的文件类型    
006    *@param int $file_size允许的文件大小    
007    *@return string 上传失败,返回失败的原因,    
008    * http://yige.org/php/    
009    * 成功返回包括文件名的路径。    
010    */    
011         
012         
013    function upload_fun($up_info,$to_path,$typelist=array(),$file_size=2000000){    
014         
015        //1.判断文件上传是否错误    
016         
017        if($up_file['error']>0){    
018            switch($up_info['error']){    
019                case 1:    
020                    $err_info="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";    
021                    break;    
022                case 2:    
023                    $err_info="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";    
024                    break;    
025                case 3:    
026                    $err_info="文件只有部分被上传";    
027                    break;    
028                case 4:    
029                    $err_info="没有文件被上传";    
030                    break;    
031                case 6:    
032                    $err_info="找不到临时文件夹";    
033                    break;    
034                case 7:    
035                    $err_info="文件写入失败";    
036                    break;    
037                default:    
038                    $err_info="未知的上传错误";    
039                    break;    
040            }    
041         
042            return $err_info;    
043            die();    
044        }    
045         
046         
047        //2.判断上传文件类型是否合法    
048         
049        if(count($typelist)>0){    
050            if(!in_array($up_info['type'],$typelist)){    
051         
052                $err_info='文件类型不合法!'.$up_info['type'];    
053                return $err_info;    
054                die();    
055            }    
056        }    
057         
058        //4.判断上传文件大小是否超出允许值    
059         
060        if($up_info['size']>$file_size){    
061         
062            return $err_info='文件大小超过'.$file_size;    
063            die();    
064        }    
065         
066        //5.上传文件重命名    
067         
068        $exten_name=pathinfo($up_info['name'],PATHINFO_EXTENSION);    
069         
070        do{    
071            $main_name=date('YmHis'.'--'.rand(100,999));    
072            $new_name=$main_name.'.'.$exten_name;    
073        }while(file_exists($to_path.'/'.$new_name));    
074         
075        //6.判断是否是上传的文件,并移动文件    
076         
077        if(is_uploaded_file($up_info['tmp_name'])){    
078         
079            if(move_uploaded_file($up_info['tmp_name'],$to_path.'/'.$new_name)){    
080         
081                $err_info=$to_path.'/'.$new_name;    
082                return $err_info;    
083                die();    
084            }else{    
085         
086                return $err_info='上传文件移动失败!';    
087                die();    
088         
089            }    
090        }else{    
091         
092            return $err_info='这个文件不是上传文件!';    
093            die();    
094        }    
095         
096    }    
097         
098    //函数使用方法如下    
099         
100    $multi_info=$_FILES; //接收$_FILES的全部上传信息    
101         
102    $to_path='system'; //上传文件的目标路径    
103         
104    foreach($multi_info as $name=>$up_info){ //foreach 遍历$multi_info    
105         
106        $err_info=upload_fun($up_info,$to_path); //调用单文件上传函数    
107         
108        p($err_info); //输出返回信息;    
109         
110    }


php实现:一次选择多个文件上传~

参考代码如下:
<?php
$max_files=5; //最多上传文件的个数,与 up.htm 中的 input file 控件的个数相同
$up_ok_files=0; //成功上传的文件个数
$up_folder="ups"; //保存上传文件的目标文件夹
if(isset($_FILES['myfile'])){
//由于 $_FILES['myfile'] 是个数组,所以需要使用循环遍历
for($i=0;$i<$max_files;$i++){
//如果未出错
if($_FILES['myfile']['error'][$i]==0){
if(move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$up_folder."/".$_FILES['myfile']['name'][$i])){
//成功上传后,计数器增 1
$up_ok_files +=1;
}
else{
echo "在服务器中保存失败";
}
}
}
echo "成功上传 ".$up_ok_files. " 个文件";
}
?>
注意:
如果对 $_FILES['myfile'] 这个数组的结构不清楚,可以在循环之前加入这句代码将其显示出来:
print_r($_FILES['myfile']);

html5 input标签中加了一个 multiple=true,就可以选多个文件上传了,多文件跟单文件也是一样处理,你把$_FILES打印出来就知道了,就是一个个把上传的临时文件保存到你要保存的地方就行

#18451524587# 在敲PHP时,如何实现一个file选择多个文件上传?求大神指点. - ******
#关疮# 这简单.在前端代码<input type="file" name="myFile"/>中 改成这样:<input type="file" name="myFile[]"/> 多个方括号 接收的时候回变成二维数组.可以多文件了

#18451524587# php代码 网站编程 实现上传和下载多个不同类型文件功能 - ******
#关疮# 写这样的代码没有多少难度.其实文件类型与上传和下载真的没有关系,无论什么类型都是相同的代码上传和下载.在我看来,你现在难题在于一个字段(例如三维图纸)有多个文件,这使得上传和下载的控制代码非常繁杂.有一个简便的建议...

#18451524587# php怎样实现一个file的input,添加,上传多个文件 - ******
#关疮# $File = $_FILES['filenames']; foreach( $File['name'] as $Key => $FileName ) { $FileNames = $FileName; //上传的文件名 $FileTypes = $File['type'][$Key];//上传的文件类型 $FileSize = $File['size'][$Key];//上传的文件大小 $FileTmps = $File['tmp_...

#18451524587# php 多文件上传 - ******
#关疮# 我先说一下music[]的意思,其实是在上传一个数组!等你上传成功后,其实应该使用 $_FILES['music']这个数组.add_new_music.php<?php$num=count($_FILES['music']['name']);//这个是你自己所上传文件名的数组(所有的即5个) echo $num."<br>"; for($i=0;$i<$num;$i++){ echo $_FILES['music']['name'][$i]."<br>"; }?>

#18451524587# php中怎么写多文件上传 - ******
#关疮# php多文件上传和单文件上传是一样的只不过是多文件上传, 多了一个循环而已!

#18451524587# PHP多文件上传 - ******
#关疮# <input type="file" name="file1"><br><input type="file" name="file2"><br><input type="file" name="file3"><br><input type="file" name="file4"><br> 改成<input type="file" name="file[]"><br><input type="file" name="file[]"><br><input type="file" name="file[]"><br><input type="file" name="file[]"><br>

#18451524587# 【PHP】这个多文件上传的代码解释一下.谢谢 - ******
#关疮# array_push($_FILES["picture"]["name"],""); 为什么加入空元素?这个是必须的,因为是多文件上传,单文件的时候$_FILES["picture"]["name"]返回的是数值而不是数组,用array_push给它添加一个空值让它变成数组然后才能使用array_unique去除重复文件,然后array_pop再删除那个空值.这是我的理解,仅供参考.

#18451524587# 如何实现多文件上传? - ******
#关疮# 可用多个FileUpload,自己可以写一些逻辑 用一个按钮提交,可用foreach取得每个FileUpload,用FileUpload的PostedFile得到每个上传的文件

#18451524587# php怎么上传做个文件,要能够同时上传多个文件 ******
#关疮# 可以这样做啊, <input type="file" name="file[]" /> <input type="file" name="file[]" /> ... <input type="file" name="file[]" />

#18451524587# php中如何上传整个文件夹里的所有文件? - ******
#关疮# 相当于多文件上传!只有用插件!我现在用的是swfupload这个插件!还不错!

  • PHP多个图片文件上传
  • 答: 表单要加上 enctype="multipart/form-data"后台用$_FILES[]接收

  • input file用了multiple属性,而且选择了多张图片,PHP该怎么上传?
  • 答:其实就那两个函数\x0d\x0ais_uploaded_file()和move_uploaded_file()\x0d\x0a是循环上传的。你打印下$_FILES这个超全局数组就明白了。下面我的测试代码上传图片的:\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a \x0d\x...

  • PHP 用AJAX 做多文件上传
  • 答:它可以实现纯粹html、javascrip难以逾越的功能:(1)可以同时上传多个文件;(2)类似AJAX的无刷新上传;(3)可以显示上传进度;(4)良好的浏览器兼容性;目前QQ空间和博客网站,比较先进的图片上传也是基于swf和js代码结合的做法。

  • thinkphp怎么实现上传多个文件到不同的目录
  • 答: 这种不同name的多文件上传,怎么改UploadFile.class.php类,来实现多name多文件上传 index.html flv文件 视频压缩文件

  • 跪求php 上传文件代码
  • 答:常用的PHP上传文件的代码实例。以下为引用的内容: 网页教学网(webjx.com)文件上传实例 <

  • 求实现php文件上传代码
  • 答:目录 POST方法上传 错误信息说明 常见缺陷 上传多个文件 对PUT方法的支持 POST方法上传 本特性可以使用户上传文本和二进制文件。用PHP的认证和文件操作函数,可以完全控制允许哪些人上传以及文件上传后怎样处理。PHP能够接受任何...

  • 求PHP网页上传文件代码.
  • 答:自定义文件上传函数 :<?php / 文件上传 / / 文件上传函数 param $name string 表单上传框的name值 param $file_arr array 上传文件的类型限制 param $filesize int 上传文件限制其大小 param $path ...

  • php上传文件代码,怎么写
  • 答: 文件上传到服务器需要一些时间 <?php upLoadDir="/"; //为目录变量指定目录位置 upLoadError=$_FILES['upLoad']['error'];fileName=$_FILES['upLoad']['name'];fileTemName=$_FILES['upLoad']['tmp_name'];f...

  • php中上传文件的方法有多少种
  • 答:< input type="submit" value="上传" name="B1"> 服务端利用php的$_FILES['file']['name']来获取文件后缀名,具体的代码自己查找资料看看,这里就不多说了。总结;这个方法可以用来上传小于2M的文件或者是图片,基本...

  • PHP如何上传文件?
  • 答:if(move_uploaded_file($_FILES['photoupload']['tmp_name'], $uploadfile)){ result['result'] = 'success';result['size'] =$f_name."文件上传成功";} else{ result['result'] = 'failed';result['error']...

    为传递更多家电数码信息,若有事情请联系
    数码大全网