2009年4月25日 分类:
PHP,
原创 浏览次数:7
源文地址
/** 使用本程序之前,请修改php.ini中限制的单个文件最大容量
* upload_max_filesize = 20M //最大文件限制
* post_max_size = 20M //POST接收的最大限制,即所有上传文件的总量
* 并最好与程序中的单个文件限制相同,以免出现验证错误
* 本脚本文件编码为ANSI,建议修改为与其他文件一致的编码
* 请自行修改可以上传的文件类型
* 如果有需要,可以自行修改文件类型的验证方式,读文件开头的2字节,而不是通过后缀名
* @filesource csdn网友mengshan1986提供的php版本
* @changer klniuer
* @site http://livesdrop.com
**/
?>
$sort=12;
$f_type=strtolower("swf,jpg,rar,zip,7z,iso,gif");//设置可上传的文件类型
$file_size_max=20*1024*1024;//限制单个文件上传最大容量
$overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="Files";//设置上传域名称
$_msg = "";
if (isset($_FILES[$f_input])){ //如果文件总大小超过服务器POST限制,文件就没有上传至服务器,foreach就不会执行,返回客户端的会是一个空字符串,此处加入验证
foreach($_FILES[$f_input]["error"] as $key => $error){
$up_error="no";
if ($error == UPLOAD_ERR_OK && is_uploaded_file($_FILES[$f_input]['tmp_name'][$key])){ //加入安全验证
$f_name=$_FILES[$f_input]['name'][$key];//获取上传源文件名
$uploadfile=$uploaddir.strtolower(basename($f_name));
$tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名
$tmp_type=strtolower($tmp_type);
if(!stristr($f_type,$tmp_type)){
$_msg .= "对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!\\n";
$up_error="yes";
}elseif ($_FILES[$f_input]['size'][$key]>$file_size_max){
$_msg .= "对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]['size'][$key]/1024/1024,1)."MB,大于限制的". round($file_size_max/1024/1024,1)."MB,上传失败!\\n";
$up_error="yes";
}elseif (file_exists($uploadfile) && !$overwrite){
$_msg .= "对不起,文件 ".$f_name." 已经存在,上传失败!\\n";
$up_error="yes";
}else{//不需要随机数
$t=date("ymdHis").substr($gettime[0],2,6).$rand;
$attdir="file/";//将文件移至的目录,请根据自己情况修改,相对于该脚本路径
if(!is_dir($attdir))
mkdir($attdir);
$uploadfile=$attdir.$t.".".$tmp_type;
if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key], $uploadfile))){
$_msg .=$f_name.' 上传成功\\n';
}else{
$_msg .=$f_name.' 上传失败\\n';
}
}
}elseif($error == UPLOAD_ERR_INI_SIZE){//调试使用,防止自己忘记更改upload_max_filesize 最大文件限制
$msg .= "对不起,文件大小超过服务器限制,请通知管理员。\\n";
}else{
$msg .= "对不起,上传不可意料错误!\\n";
}
}
}else{
$_msg .= "对不起,文件大小超过限制!\\n";//如果上传上来的文件为空,则判断文件超过限制大小
}
echo "<script type="text/javascript"><!--mce:0--></script>";
?>
完整程序:http://www.boxcn.net/shared/fur3frt2zd
本文地址:http://klniu.com/post/php-post-files/
2010年4月10日 11:59
多文件,大文件上传,推荐swfupload.
回复
2010年4月10日 12:15
当时也是在用不了swfupload的情况下才用此方法的,swfupload的界面问题我一直没有办法解决,于是就想自己动手去做了
回复