当前位置:首页 » 文件管理 » php多个文件上传

php多个文件上传

发布时间: 2023-08-04 19:26:38

Ⅰ 多文件上传php怎么写

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

Ⅱ php同时上传多个文件或者整个文件夹怎么实现,最好发个demo,求大侠们帮助下

您好,这样的:
纯web无解,最少需要客户端装控件,
php将本地文件夹上传的其他服务器倒是可以。
方法一:把文件夹打包成zip上传然后服务器端解压,调用/内建的解压程序解压然后删除zip文件。
方法二:做个遍历循环判断,遇到目录的就利用mkdir创建目录,遇到文件的就用ftp传上到服务器。

Ⅲ 用PHP控制FTP文件上传

利用PHP,你总是可以有多种方式来完成某个特定的任务。我们就拿文件上传举个例子。当然了,你可以按照传统的方式来使用HTTP文件上传,把文件直接传输到Web服务器磁盘上。南邵电脑培训认为你还可以用更加奇异的方式上传,用FTP协议两步就完成上传:从你的本地硬盘到Web服务器,然后再到FTP服务器。



PHP在本机同时支持FTP和HTTP上传,所以你可以根据自己应用程序的设计需要进行最佳的选择。使用PHP的FTP函数进行文件传输几乎与使用传统的FTP客户端相同——你会看到连函数的名字都和标准的FTP命令类似。


关于HTTP文件上传的文章已经多得满天飞了,这就是为什么本文有必要把注意卖灶烂力放在基于FTP的文件辩首上传上了(但是在后面给出的例子中,两种方式你都会看到)。要注意的是,本教程假设你已经安装好了PHP/Apache,而且HTTP文件上传和FTP的函数都已经激活了。


第一步:确信你拥有连接/上传到FTP服务器的权限


PHP的FTP函数需要客户端-服务器连接,所以你需要在进行文件上传之前登录到目标服务器上。你的第一项任务是确信你已经拥有了完成这项任务的信中漏任书。这一步可能看起来是理所当然的,但是你会惊奇地发现有多少开发人员忘了这么做,结果后来浪费大量的时间来解决因此而出现的问题。


Ⅳ php curl 上传多文件,怎么弄

下面是一段示例代码:

<?php
//注:PHP5.5.0起,文件上传建议使用CURLFile代替@
//多文件上传
$data=array(
'input_file[0]'=>newCURLFile('d:/1.txt','text/plain','testfile.txt'),
'input_file[1]'=>newCURLFile('d:/2.txt','text/plain'),
'input_file[2]'=>newCURLFile('d:/3.txt','text/plain'),
);
$ch=curl_init('http://demo.zjmainstay.cn/php/curl/curlUploadHandler.php');
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_exec($ch);

如果你的版本比较低,文件部分使用:

'input_file[0]'=>'@d:/1.txt',

这样既可。


我的博客《PHP cURL实现模拟登录与采集使用方法详解》对各类curl问题做了系统而详细的讲解,请参考“十、模拟上传文件”部分查看更多文件上传内容,如直接基于采集的文件内容进行上传等。

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:432
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:743
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:146
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:235
java驼峰 发布:2025-02-02 09:13:26 浏览:651
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:538
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726