文档章节

php文件上传处理流程及多文件上传的思路

sgt.dong
 sgt.dong
发布于 2016/03/21 21:24
字数 681
阅读 18
收藏 1

1,判断文件是否为空 empty($_FILES[表单名][name])

2,判断文件上传是否成功 $_FILES[表单名][error]

3,判断文件上传类型$_FILES[表单名][type]

4,判断文件是不是上传文件,is_uploaded_file

5,移动上传的文件,move_uploaded_file

6,如果写成方法,需要返回文件路径


多文件上传

1,过滤空值array_filter()

2,循环上传

/**
 * 文件上传处理函数
 * @param array $upfile 上传文件信息数组,如:$_FILES['pic'];
 * @param string $path 上传文件的存储目录路径
 * @param array $typelist 允许上传的文件类型,默认为array()则表示不限制类型
 *		如:array("image/jpeg","image/gif","image/png"); //定义允许的上传文件类型
 * @param int $maxsize 允许上传文件的大小,默认为0表示不限制。
 * @return array 返回值为两个单元的数组,
 *			第一个单元下标为error:true表示成功,false表示失败
 *			第二个单元下标为info:上传成功表示文件名,上传失败表示失败原因
 */
function uploadFile($upfile,$path,$typelist=array(),$maxsize=0){
	//1.定义一些变量:
                    $path=$path.'/'.date('Ymd').'/';
                    if(!is_dir($path)){
                        mkdir($path,0777,true);
                    }
	$path=rtrim($path,"/")."/"; //处理一下上传目录
	$res=array("error"=>false,"info"=>""); //定义返回值
	//2.判断上传文件错误
	if($upfile['error']>0){
		switch($upfile['error']){
			case 1: $info="上传文件大小超过了php.ini中配置"; break;
			case 2: $info="上传文件大小超过form表单中MAX_FILE_SIZE的设置"; break;
			case 3: $info="文件只有部分被上传"; break;
			case 4: $info="没有文件被上传"; break;
			case 6: $info="找不到临时文件夹"; break;
			case 7: $info="文件写入失败"; break;
			default: $info="未知错误!"; break;
		}
		$res['info']=$info;
		return $res;
	}

	//3.判断上传文件类型
	if(count($typelist)>0 && !in_array($upfile['type'],$typelist)){
		$res['info']="上传文件类型错误!当前文件类型:".$upfile['type'];
		return $res;
	}

	//4.判断上传文件大小
	if($maxsize>0 && $upfile['size']>$maxsize){
		$res['info']="上传文件大小超出{$maxsize}";
		return $res;
	}

	//5.上传文件的名称处理(防止名字重复)
	$ext = pathinfo($upfile['name'],PATHINFO_EXTENSION);//获取文件的后缀名
	do{
		$newfile = time().rand(1000,9999).".".$ext;  //随机一个文件名
	}while(file_exists($path.$newfile)); //判断是否存在

	//6.执行文件上传。
  //判断临时目录的的文件是否是有效的上传文件
	if(is_uploaded_file($upfile['tmp_name'])){
    // 这个就类似于copy函数
		if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
      
			$res['error']=true;
			$res['info']=$newfile;
		}else{
			$res['info']="移动上传文件错误!";
		}
	}else{
		$res['info']="不是有效的上传文件!";
	}
	return $res;
}

文件上传方法

$arr=uploadFile($_FILES['file'],'./upload');
var_dump($arr);

上传方法调用

调用成功后,会在upload文件夹下创建以年月日为目录名的文件夹,并将文件进行上传

© 著作权归作者所有

sgt.dong
粉丝 0
博文 19
码字总数 2945
作品 0
杭州
私信 提问
08-05更新ThinkPHP+swfupload多图上传实例 经典实用的php多图上传

先上一张图片给大家看看效果,有需要就下载学习。不一定非要在ThinkPHP里,只是我非常喜欢去用ThinkPHP做开发了。 好了。现在咱们需要的东西是,下载一个swfupload.js网上很多,自己百度吧....

3147972
2014/03/21
0
0
依然是关于“PHP图片压缩的返回地址”问题

首先我也是因为一些需求看到了这个“PHP图片无损压缩”的帖子:http://www.oschina.net/question/814955_115750 感谢@MeiKai @洒洒 @宝仔love 但是我这里依然有一个问题,实际上我的需求就是...

疯狂的流浪
2014/02/04
996
10
php文件上传与下载

php文件上传 在通过form表单进行文件上传的,PHP需要用到预定义变量$_FILES $_FILES['userfile']['name'] 客户端机器文件的原名称。 $_FILES['userfile']['type'] 文件的 MIME 类型,如果浏览......

Corwien
2016/04/19
184
0
用Vue来实现图片上传多种方式

项目中需要上传图片可谓是经常遇到的需求,本文将介绍 3 种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来。 没有业务场景的功能都是耍流氓,那么我们先来模拟...

huangjincq
2018/07/17
0
0
详解利用plupload突破HTTP上传限制

plupload 是一款国外的上传开源组件,官方使用PHP作为服务器语言。这篇文章主要介绍plupload的在上传大文件方面的应用。 plupload支持技术: 1:Flash 2:Gears 3:HTML 5 4:Silverlight 5...

晨风互动
2011/12/03
2.6K
3

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习之模块

1、 stub_status模块: 用于展示nginx处理连接时的状态。 配置语法如下: Syntax:stub_status;Default:默认没有配置Context:server、location 可以编辑default.conf,加上如下配置: ...

码农实战
31分钟前
3
0
MySQL,必须掌握的6个知识点

目录 一、索引B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化使用 Explain 进行分析 优化数据访问 重构查询方式 三、存储引擎InnoDB MyISAM 比较 四、数据类...

李红欧巴
35分钟前
4
0
堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
47分钟前
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
49分钟前
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部