function up_file($file_dir=false,$input_name='',$file_type=array('image/gif','image/jpeg','image/pjpeg'),$file_name=false,$file_max_size=2)
{//上传图片,$file_dir:传入图片保存文件夹,并返回图片保存所有信息;返回一个数组:array(成功吗,出错信息,array(上传后名,文件夹,上传前文件名));
//对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg
//$file_dir = dirname(__FILE__).'/'.$file_dir;
if ( (intval(ini_get('upload_max_filesize')) < $file_max_size) && (!ini_set('upload_max_filesize',$file_max_size)) )
{//不允许修改
return array(false,"你需要上传的文件最大值 $file_max_size M,超过服务器默认设置大小".ini_get('upload_max_filesize').
',但服务器不允许使用ini_set方法修改upload_max_filesize(允许上传文件的最大值,单位是M).'.
"你只能手动修改php.ini中的upload_max_filesize值成 $file_max_size 后才能正常操作,".
'或者把自己允许的最大值改成服务器默认值一样.');
}
$error_a = array('0: 没有错误发生,文件上传成功。',
'1: 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。 ',
'2: 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 ',
'3: 文件只有部分被上传。 ',
'4: 没有文件被上传。' ,
'5: 上传文件为0',
'6: 找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。'
);
if (!file_exists($file_dir))
{
return array(false,'保存文件夹['.$file_dir.']不存在,请创建再试.');
}
if (!is_array($file_type))
{
return array(false,'图片类型未指定.请指定图片类型数组');
}
if ($input_name=='') $files = $_FILES;
else if(empty($_FILES[$input_name]) )
{
return array(false,'<input type="file" name="'.$input_name.'">对象 不存在');
}else $files = $_FILES[$input_name];
$re_array=array();
foreach( $files as $file)
{
if (is_array($file['error']))
{
$for_count = count($file['error']);
for ($for_i =0; $for_i < $for_count; $for_i++)
{
if ($file["error"][$for_i] == 4) continue;//未选择文件
if ($file["error"][$for_i] > 0)
{
return array(false,$error_a[$file["error"][$for_i]]);
}
if ($file["size"][$for_i] / 1048576 > $file_max_size)
{
return array(false,"文件超过 $file_max_size M!");
}
if (!in_array($file["type"][$for_i],$file_type))
{
return array(false," {$file["type"][$for_i]} 类型禁止上传!");
}
$file_name = $file_name?$file_name:preg_replace('/^.+/.|^.+$/',md5(time()+count($re_array)).'.',$file['name'][$for_i]);
if (@move_uploaded_file($file["tmp_name"][$for_i],$file_dir.'/'.$file_name))
{
$re_array[count($re_array)] = array($file_name,$file_dir,$file['name'][$for_i]);
}else
{
return array(false,'move_uploaded_file 移动文件失败,可能是没有写['.$file_dir.'/'.$file_name.']的权限!');
}
}
}else
{
if ($file["error"] == 4) break;//未选择文件
if ($file["error"] > 0)
{
return array(false,$error_a[$file["error"]]);
}
if ($file["size"] / 1048576 > $file_max_size)
{
return array(false,"文件超过 $file_max_size M!");
}
if (!in_array($file["type"],$file_type))
{
return array(false," {$file["type"]} 类型禁止上传!");
}
$file_name = $file_name?$file_name:preg_replace('/^.+/.|^.+$/',md5(time()+count($re_array)).'.',$file['name']);
if (@move_uploaded_file($file["tmp_name"],$file_dir.'/'.$file_name))
{
$re_array[count($re_array)] = array($file_name,$file_dir,$file['name']);
}else
{
return array(false,'move_uploaded_file 移动文件失败,可能是没有写['.$file_dir.'/'.$file_name.']的权限!');
}
}
}
if (count($re_array) == 0) return array(false,false);
return array(true,'上传成功',$re_array);
}