php 上传多文件_PHP文件上传-多文件上传思路

2.多文件上传的两种情况

①使用多个name值

a.点击提交之后接收到的数据格式

Array

(

[file1] => Array

(

[name] => 8.png

[type] => image/png

[tmp_name] => G:\wamp\tmp\php737.tmp

[error] => 0

[size] => 200

)

[file2] => Array

(

[name] => 28.png

[type] => image/png

[tmp_name] => G:\wamp\tmp\php738.tmp

[error] => 0

[size] => 6244

)

[file3] => Array

(

[name] => 54a296f8n6787b34c.png

[type] => image/png

[tmp_name] => G:\wamp\tmp\php739.tmp

[error] => 0

[size] => 3143

)

[file4] => Array

(

[name] => 54c0573dncb4db6f7.jpg

[type] => image/jpeg

[tmp_name] => G:\wamp\tmp\php788.tmp

[error] => 0

[size] => 5404

)

)

从这种格式可以看出来,每一个文件对应一个数组单元

所以使用foreach遍历数组,并对每个数组单元进行文件上传函数调用

b.点击提交后的操作

①接收上传的文件信息

$file = $_FILES;

②引入上传函数

include('./functions.php');

③设置文件保存路径

$path = './uploads/';// 此目录需要手动创建

④调用文件上传函数

foreach($file as $v){

$info = uploadFile($v,$path);

⑤判断上传状态

if($info['isok']){

echo '上传成功'.$info['message'];

} else {

echo '上传失败'.$info['message'];

}

}

---------------------------------------------------------------

②使用单个name值

a.第一种写法

b.第二种写法

c.点击提交之后,接收到的数据格式

Array

(

[userpic] => Array

(

[name] => Array

(

[0] => 8.png

[1] => 9b2d7581fba543ec9bcf95e91018915a.gif

[2] => 12.jpg

)

[type] => Array

(

[0] => image/png

[1] => image/gif

[2] => image/jpeg

)

[tmp_name] => Array

(

[0] => G:\wamp\tmp\php85E5.tmp

[1] => G:\wamp\tmp\php85E6.tmp

[2] => G:\wamp\tmp\php8635.tmp

)

[error] => Array

(

[0] => 0

[1] => 0

[2] => 0

)

[size] => Array

(

[0] => 200

[1] => 16503

[2] => 19443

)

)

)

从这种格式可以看出来,是将上传的文件信息分开保存到每个下标中。

所以要做的事情就是拼接出来一个完整的文件信息,一个一维数组

Array(

[name] => 54c0573dncb4db6f7.jpg

[type] => image/jpeg

[tmp_name] => G:\wamp\tmp\php788.tmp

[error] => 0

[size] => 5404

)

所以要进行的操作,是遍历$_FILES['file'] 然后从中取出每条上传文件的信息

d.点击提交后的操作

①接收上传的文件信息

$file = $_FILES['file'];

②引入上传函数

include('./functions.php');

③设置文件保存路径

$path = './uploads/';// 此目录需要手动创建

④调用文件上传函数

foreach($file['name'] as $key=>$value){

$data['name'] = $file['name'][$key];

$data['type'] = $file['type'][$key];

$data['tmp_name'] = $file['tmp_name'][$key];

$data['error'] = $file['error'][$key];

$data['size'] = $file['size'][$key];

$info = uploadFile($data,$path);

⑤判断上传状态

if($info['isok']){

echo '上传成功'.$info['message'];

} else {

echo '上传失败'.$info['message'];

}

}

a.遍历$file['name'] 只是为了获取$key

b.每遍历一次,取出相对应下标的文件信息,赋值给一个新数组中对应的键

如第一次 $key = 0;

$data['name'] = $file['name'][0];// 相当于取出了第一个文件的名字

$data['type'] = $file['type'][0];// 相当于取出了第一个文件的类型

...

第一次遍历完成之后

$data = array(

[name] => 54c0573dncb4db6f7.jpg

[type] => image/jpeg

[tmp_name] => G:\wamp\tmp\php788.tmp

[error] => 0

[size] => 5404

);

这样就取出了第一个文件的所有信息

然后调用上传函数,进行文件上传处理

第二次遍历时$key=1,相当于获取第二个上传文件的信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值