<?php
//封装文件上传函数:上传成功后返回新的文件名,错误返回错误提示
//先定义一个函数
/*
function uploadFile(){
//实现文件上传
}
*/
//1、确认函数参数
/*
*@param1 array $file (文件五要素,文件数组信息)
*@param2 array $allow 文件允许类型(MIME)
*@param3 string $error 用来记录错误信息
*@param4 array $maxsize=1000000 默认允许大小
*@param5 string $path 要上传文件的路径
*@param6 return 成功返回新的文件名,失败返回false
*/
function uploadFile($file,$allow,&$error,$path,$maxsize=1000000){
//2、判断文件有效:有效的文件信息应该是具有5个元素的数组
if(!$file || count($file)!=5 ){
$error = '无效文件,不能上传';
return false;
}
//3、判断文件类型
if(!in_array($file['type'],$allow)){
$allow_str = implode(',',$allow);
$error="文件类型不合法,合法的文件类型有:$allow_str";
return false;
}
//4、判断系统错误:即需要上传文件$file['error']提示的信息
switch($file['error']){
case 1:
$error='';
return false;
case 2:
$error='';
return false';
......
}
//5、判断默认允许文件大小
if($file['size']>$maxsize){
$error = "文件太大,默认允许文件小于$maxsize";
return false;
}
//6、产生新的文件名
$filename=getRandomName($file['name']);
//7、移动文件
if(move_uploaded_file($file['tmp_name'],$path."/".$filename)){
//成功,返回文件名$filename
return $filename;
}else{
//失败,返回false
$error = '文件移动失败';
return false;
}
}
//随机产生新的文件名的函数
function getRandomName($filename){
//获取当前时间
$newname=date('YmdHis');
//获取随机字符串
$arr='abcdefghigklmnopqrstuvwxyz';
for($i=0;$i<6;$i++){
$newname.=$arr[mt_rand(0,strlen($arr)-1)];
}
//获取文件后缀
$last = strrchr($filename,'.');
$newname=$newname.$last;
return $newname;
}
//调用函数代码
//定义条件
//定义允许上传文件类型
$allow = array('image/jpg','image/jpeg','image/png','image/gif');
//定义文件移动路径
$path='uploads';
//允许上传文件大小
$maxsize=1000000;
//获取上传文件:文件要素数组信息
$file=$_FILES['myfile'];
//调用函数
$filename = uploadFile($file,$allow,$error,$path,$maxsize);
if($filename){
echo $filename;
}else{
echo $error;
}
转载于:https://my.oschina.net/u/2483876/blog/519280