PHP文件上传之多文件上传的实现思路
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-07 13:53:27 浏览: 评论:0
这篇文章主要介绍了PHP文件上传之多文件上传的实现思路的相关资料,需要的朋友可以参考下。
多文件上传的两种情况
①使用多个name值
- <input type="file" name="file1">
- <input type="file" name="file2">
- <input type="file" name="file3">
- <input type="file" name="file4">
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.第一种写法
- <input type='file' name="file[]">
- <input type='file' name="file[]">
- <input type='file' name="file[]">
b.第二种写法
<input type="file" name="file[]" multiple>
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,相当于获取第二个上传文件的信息
Tags: PHP文件上传
相关文章
- ·php实现文件上传的程序代码(2013-11-13)
- ·php文件上传move_uploaded_file函数(2014-06-03)
- ·超简单的php文件上传程序(2014-06-05)
- ·php把文件上传到远程服务器上例子(2014-06-28)
- ·一个完美php文件上传类使用实例(2014-07-03)
- ·php文件上传实例(2014-07-05)
- ·PHP文件上传进度条基于Session与Javascript实现(2014-07-05)
- ·PHP文件上传实现上传到另一台服务器(2014-07-26)
- ·支持多文件上传的php文件上传代码(2014-08-02)
- ·php文件上传之原理分析与上传类代码(2014-08-02)
- ·php文件上传代码详细(2014-08-05)
- ·php文件上传与move_uploaded_file简介(2014-08-06)
- ·简单php文件上传详细说明(2014-08-15)
- ·php文件上传代码(2014-08-16)
- ·windows/linux中PHP文件上传大小修改(2014-08-26)
- ·php登录操作的文件上传管理系统(2014-08-27)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)