之前一直在研究ajax+php的表单无刷新验证,主要是用在注册提交表单上面的,ajax技术的使用使访客对于网页的友好度大大增加,作为提升页面友好的最主要技术,ajax是必不可少的。
当然,ajax不仅仅只有表单的无刷新验证,还可以更好地应用到页面的其它地方,凡是无刷新的地方基本上都有ajax技术的身影,今天讨论的是ajax+php无刷新上传图片。
无刷新上传图片的技术常常应用在上传附件或图片上传,比如常见的QQ邮箱上传附件,163邮箱上传附件,QQ空间上传图片等,这类都是应用了ajax无刷新的技术,可以让我们在当前页看到上传的附件,而在一般的小站点后台,上传产品时,往往看不到上传的产品图片的情况,这样往往起不到很好的效果。
下面是一款ajax+php的无刷新上传图片的源码,这仅仅是一个实例,而修改这个实例便可以很好地应用在网页当中,为你的页面增加一款无刷新的图片上传效果吧,这样的效果很多,可以到网上去查找。
file.php文件
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <? $sort=12; $f_type=strtolower("swf,jpg,rar,zip,7z,iso,gif");//设置可上传的文件类型 $file_size_max=200*1024*1024;//限制单个文件上传最大容量 $overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许 $f_input="Files";//设置上传域名称 foreach($_FILES[$f_input]["error"] as $key => $error){ $up_error="no"; if ($error == UPLOAD_ERR_OK){ $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)){ echo "<script>alert('对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!')</script>"; $up_error="yes"; } if ($_FILES[$f_input]['size'][$key]>$file_size_max) { echo "<script>alert('对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input] ['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!')</script>"; $up_error="yes"; } if (file_exists($uploadfile)&&!$overwrite){ echo "<script>alert('对不起,文件 ".$f_name." 已经存在,上传失败!')</script>"; $up_error="yes"; } $string = 'abcdefghijklmnopgrstuvwxyz0123456789'; $rand = ''; for ($x=0;$x<12;$x++) $rand .= substr($string,mt_rand(0,strlen($string)-1),1); $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))){ |
fileupload.htm页面
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无刷新文件上传系统</title> </head> <body> <style> .fu_list { width:600px; background:#ebebeb; font-size:12px; } .fu_list td { padding:5px; line-height:20px; background-color:#fff; } .fu_list table { width:100%; border:1px solid #ebebeb; } .fu_list thead td { background-color:#f4f4f4; } .fu_list b { font-size:14px; } /*file容器样式*/ a.files { width:90px; height:30px; overflow:hidden; display:block; border:1px solid #BEBEBE; background:url(img/fu_btn.gif) left top no-repeat; text-decoration:none; } a.files:hover { background-color:#FFFFEE; background-position:0 -30px; } /*file设为透明,并覆盖整个触发面*/ a.files input { margin-left:-350px; font-size:30px; cursor:pointer; filter:alpha(opacity=0); opacity:0; } /*取消点击时的虚线框*/ a.files, a.files input { outline:none;/*ff*/ hide-focus:expression(this.hideFocus=true);/*ie*/ } </style> <form id="uploadForm" action="File.php"> <table border="0" cellspacing="1" class="fu_list"> <thead> <tr> <td colspan="2"><b>上传文件</b></td> </tr> </thead> <tbody> <tr> <td align="right" width="15%" style="line-height:35px;">添加文件:</td> <td><a href="javascript:void(0);" class="files" id="idFile"></a> <img id="idProcess" style="display:none;" src="img/loading.gif" /></td> </tr> <tr> <td colspan="2"><table border="0" cellspacing="0"> <thead> <tr> <td>文件路径</td> <td width="100"></td> </tr> </thead> <tbody id="idFileList"> </tbody> </table></td> </tr> <tr> <td colspan="2" style="color:gray">温馨提示:最多可同时上传 <b id="idLimit"></b> 个文件,只允许上传 <b id="idExt"></b> 文件。 </td> </tr> <tr> <td colspan="2" align="center" id="idMsg"><input type="button" value="开始上传" id="idBtnupload" disabled="disabled" /> <input type="button" value="全部取消" id="idBtndel" disabled="disabled" /> </td> </tr> </tbody> </table> </form> <script type="text/javascript"> var isIE = (document.all) ? true : false; var $ = function (id) { var Class = { var Extend = function(destination, source) { var Bind = function(object, fun) { var Each = function(list, fun){ //文件上传类 //整理一次 var fu = new FileUpload("uploadForm", "idFile", { ExtIn: ["gif","jpg"], $("idBtnupload").onclick = function(){ //用来添加文件列表的函数 $("idLimit").innerHTML = fu.Limit; $("idExt").innerHTML = fu.ExtIn.join(","); $("idBtndel").onclick = function(){ fu.Clear(); } //在后台通过window.parent来访问主页面的函数 </script> |