php 多文件上传组件
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_cn"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>php 多php组件</title> </head> <body bgcolor="#ffffff" style="text-align:center;"> <!--影片中使用的 url--> <!--影片中使用的文本--> <!-- saved from url=(0013)about:internet --> <script language="php"> function challs_flash_update(){ //flash 初始化函数 var a={}; //定义变量为object 类型 a.title = "上传文件"; //设置组件头部名称 a.formname = "filedata"; //设置form表单的文本域的name属性 a.url="update.php"; //设置服务器接收代码文件 a.parameter="bs=tyi&id=50"; //设置提交参数,以get形式提交 a.typefile=["images (*.gif,*.png,*.jpg,*jpeg)","*.gif;*.png;*.jpg;*.jpeg;","gif (*.gif)","*.gif;","png (*.png)","*.png;","jpeg (*.jpg,*.jpeg)","*.jpg;*.jpeg;"]; //设置可以上传文件 数组类型 //"images (*.gif,*.png,*.jpg)"为用户选择要上载的文件时可以看到的描述字符串, //"*.gif;*.png;*.jpg"为文件扩展名列表,其中列出用户选择要上载的文件时可以看到的 windows 文件格式,以分号相隔 //2个为一组,可以设置多组文件类型 a.uphpize=0; //可限制传输文件总容量,0或负数为不限制,单位mb a.filenum=0; //可限制待传文件的数量,0或负数为不限制 a.size=1; //上传单个文件限制大小,单位mb,可以填写小数类型 a.formid=[select,select2]; //设置每次上传时将注册了id的表单数据以post形式发送到服务器 //需要设置的form表单中checkbox,text,textarea,radio,select项目的id值,radio组只需要一个设置id即可 //参数为数组类型,注意使用此参数必须有 challs_flash_formdata() 函数支持 a.autoclose=1; //上传完成条目,将自动删除已完成的条目,值为延迟时间,以秒为单位,当值为 -1 时不会自动关闭,注意:当参数completeclose为false时无效 a.completeclose=true; //设置为true时,上传完成的条目,将也可以取消删除条目,这样参数 upsize 将失效, 默认为false a.repeatfile=true; //设置为true时,可以过滤用户已经选择的重复文件,否则可以让用户多次选择上传同一个文件,默认为false a.returnserver=true; //设置为true时,组件必须等到服务器有反馈值了才会进行下一个步骤,否则不会等待服务器返回值,直接进行下一步骤,默认为false a.md5file = 1; //设置md5文件签名模式,参数如下 ,注意:flash无法计算超过100m的文件,在无特殊需要时,请设置为0 //0为关闭md5计算签名 //1为直接计算md5签名后上传 //2为计算签名,将签名提交服务器验证,在根据服务器反馈来执行上传或不上传 //3为先提交文件基本信息,根据服务器反馈,执行md5签名计算或直接上传,如果是要进行md5计算,计算后,提交计算结果,在根据服务器反馈,来执行是否上传或不上传 a.loadfileorder=true; //选择的文件加载文件列表顺序,true = 正序加载,false = 倒序加载 a.mixfilenum=0; //至少选择的文件数量,设置这个将限制文件列表最少正常数量(包括等待上传和已经上传)为设置的数量,才能点击上传,0为不限制 a.listshowtype = 1; //文件列表显示类型:1 = 传统列表显示,2 = 缩略图列表显示(适用于图片专用上传) a.infodownright = "等待上传:%1%个 已上传:%2%个"; //右下角统计信息的文本设置,文本中的 %1% = 等待上传数量的替换符号,%2% = 已经上传数量的替换符号 return a ; //返回object } function challs_flash_oncomplete(a){ //每次上传完成调用的函数,并传入一个object类型变量,包括刚上传文件的大小,名称,上传所用时间,文件类型 var name=a.filename; //获取上传文件名 var size=a.filesize; //获取上传文件大小,单位字节 var time=a.updatetime; //获取上传所用时间 单位毫秒 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型 document.getelementbyid(show).innerhtml+=name+ --- +size+字节 ----文件类型:+type+--- 用时 +(time/1000)+秒<br><br> } function challs_flash_oncompletedata(a){ //获取服务器反馈信息事件 document.getelementbyid(show).innerhtml+=<font color="#ff0000">服务器端反馈信息:</font><br />+a+<br />; } function challs_flash_onstart(a){ //开始一个新的文件上传时事件,并传入一个object类型变量,包括刚上传文件的大小,名称,类型 var name=a.filename; //获取上传文件名 var size=a.filesize; //获取上传文件大小,单位字节 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型 document.getelementbyid(show).innerhtml+=name+开始上传!<br />; return true; //返回 false 时,组件将会停止上传 } function challs_flash_oncompleteall(a){ //上传文件列表全部上传完毕事件,参数 a 数值类型,返回上传失败的数量 document.getelementbyid(show).innerhtml+=<font color="#ff0000">所有文件上传完毕,</font>上传失败+a+个!<br />; //window.location.href=http://www.access2008.cn/update; //传输完成后,跳转页面 } function challs_flash_onerror(a){ //上传文件发生错误事件,并传入一个object类型变量,包括错误文件的大小,名称,类型 var err=a.texterr; //错误信息 var name=a.filename; //获取上传文件名 var size=a.filesize; //获取上传文件大小,单位字节 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型 document.getelementbyid(show).innerhtml+=<font color="#ff0000">+name+ - +err+</font><br />; } function challs_flash_formdata(a){ // 使用formid参数时必要函数 try{ var value = ; var id=document.getelementbyid(a); if(id.type == radio){ var name = document.getelementsbyname(id.name); for(var i = 0;i<name.length;i++){ if(name[i].checked){ value = name[i].value; } } }else if(id.type == checkbox){ if(id.checked){ value = id.value; } }else{ value = id.value; } return value; }catch(e){ return ; } } function challs_flash_style(){ //组件颜色样式设置函数 var a = {}; /* 整体背景颜色样式 */ a.backgroundcolor=[#f6f6f6,#f3f8fd,#dbe5f1]; //颜色设置,3个颜色之间过度 a.backgroundlinecolor=#5576b8; //组件外边框线颜色 a.backgroundfontcolor=#066ad1; //组件最下面的文字颜色 a.backgroundinsidecolor=#ffffff; //组件内框背景颜色 a.backgroundinsidelinecolor=[#e5edf5,#34629e]; //组件内框线颜色,2个颜色之间过度 a.upbackgroundcolor=#ffffff; //上翻按钮背景颜色设置 a.upoutcolor=#000000; //上翻按钮箭头鼠标离开时颜色设置 a.upovercolor=#ff0000; //上翻按钮箭头鼠标移动上去颜色设置 a.downbackgroundcolor=#ffffff; //下翻按钮背景颜色设置 a.downoutcolor=#000000; //下翻按钮箭头鼠标离开时颜色设置 a.downovercolor=#ff0000; //下翻按钮箭头鼠标移动上去时颜色设置 /* 头部颜色样式 */ a.top_backgroundcolor=[#e0eaf4,#bcd1ea]; //颜色设置,数组类型,2个颜色之间过度 a.top_fontcolor=#245891; //头部文字颜色 /* 按钮颜色样式 */ a.button_overcolor=[#fbdab5,#f3840d]; //鼠标移上去时的背景颜色,2个颜色之间过度 a.button_overlinecolor=#e77702; //鼠标移上去时的边框颜色 a.button_overfontcolor=#ffffff; //鼠标移上去时的文字颜色 a.button_outcolor=[#ffffff,#dde8fe]; //鼠标离开时的背景颜色,2个颜色之间过度 a.button_outlinecolor=#91bdef; //鼠标离开时的边框颜色 a.button_outfontcolor=#245891; //鼠标离开时的文字颜色 /* 文件列表样式 */ a.list_backgroundcolor=#eaf0f8; //列表背景色 a.list_fontcolor=#333333; //列表文字颜色 a.list_linecolor=#b3cdf1; //列表分割线颜色 a.list_canceloverfontcolor=#ff0000; //列表取消文字移上去时颜色 a.list_canceloutfontcolor=#d76500; //列表取消文字离开时颜色 a.list_progressbarlinecolor=#b3cdf1; //进度条边框线颜色 a.list_progressbarbackgroundcolor=#d8e6f7; //进度条背景颜色 a.list_progressbarcolor=[#ffcc00,#ffff00]; //进度条进度颜色,2个颜色之间过度 /* 错误提示框样式 */ a.err_backgroundcolor=#c0d3eb; //提示框背景色 a.err_linecolor=#5d7cbb; //提示框边框线景色 a.err_cancelovercolor=#0066cc; //提示框取消按钮移上去时颜色 a.err_canceloutcolor=#ff0000; //提示框取消按钮离开时颜色 a.err_fontcolor=#245891; //提示框文字颜色 return a; } var ismsie = (navigator.appname == "microsoft internet explorer"); function thismovie(moviename){ if(ismsie){ return window[moviename]; }else{ return document[moviename]; } } </script> <p><a href="temp2.html">缩略图模式</a></p> 这个选择框的数据将以post形式和图片一起传送到服务器 <select id="select"> <option value="老虎">老虎</option> <option value="兔子">兔子</option> <option value="骏马">骏马</option> </select> <select id="select2"> <option value="石头">石头</option> <option value="剪子">剪子</option> <option value="布">布</option> </select> <br> <br> 改变窗口:高 <label> : <input name="gao" type="text" id="gao" value="320" size="5"> 宽: </label> <label> <input name="kuan" type="text" id="kuan" value="408" size="5"> </label> <label> <input type="submit" name="button" id="button" value=" 修 改 " onclick="thismovie(update).width=document.getelementbyid(kuan).value;thismovie(update).height=document.getelementbyid(gao).value;"> </label> <br> <br> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="408" height="320" id="update"> <param name="allowfullscreen" value="false" /> <param name="allowscriptaccess" value="always" /> <param name="movie" value="update.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="update.swf" quality="high" bgcolor="#ffffff" width="408" height="320" name="update" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> <div id="show" style="margin-top:20px; width:500px; text-align:left;"></div> </body> </html>
php处理文件
<?php // 注意:使用组件上传,不可以使用 $_files["filedata"]["type"] 来判断文件类型 mb_http_input("utf-8"); mb_http_output("utf-8"); //--------------------------------------------------------------------------------------------- //组件设置a.md5file为2,3时 的实例代码 if(getget(access2008_cmd)==2){ // 提交md5验证后的文件信息进行验证 //getget("access2008_file_name") 文件名 //getget("access2008_file_size") 文件大小,单位字节 //getget("access2008_file_type") 文件类型 例如.gif .png //getget("access2008_file_md5") 文件的md5签名 die(0); //返回命令 0 = 开始上传文件, 2 = 不上传文件,前台直接显示上传完成 } if(getget(access2008_cmd)==3){ //提交文件信息进行验证 //getget("access2008_file_name") 文件名 //getget("access2008_file_size") 文件大小,单位字节 //getget("access2008_file_type") 文件类型 例如.gif .png die(1); //返回命令 0 = 开始上传文件,1 = 提交md5验证后的文件信息进行验证, 2 = 不上传文件,前台直接显示上传完成 } //--------------------------------------------------------------------------------------------- $type=filekzm($_files["filedata"]["name"]); if ((($type == ".gif") || ($type == ".png") || ($type == ".jpeg") || ($type == ".jpg") || ($type == ".bmp")) && ($_files["filedata"]["size"] < 200000)) { if ($_files["filedata"]["error"] > 0) { echo "返回错误: " . $_files["filedata"]["error"] . "<br />"; } else { echo "上传的文件: " . $_files["filedata"]["name"] . "<br />"; echo "文件类型: " . $type . "<br />"; echo "文件大小: " . ($_files["filedata"]["size"] / 1024) . " kb<br />"; echo "临时文件: " . $_files["filedata"]["tmp_name"] . "<br />"; if (file_exists( $_files["filedata"]["name"])) { echo $_files["filedata"]["name"] . " already exists. "; } else { move_uploaded_file($_files["filedata"]["tmp_name"], ./.$_files["filedata"]["name"]); echo "stored in: " . $_files["filedata"]["name"]."<br />"; echo "md5效验:".getget("access2008_file_md5")."<br />"; echo "<br />上传成功!你选择的是<font color=#ff0000>".getpost("select")."</font>--<font color=#0000ff>".getpost("select2")."</font>"; } } } else { echo "上传失败,请检查文件类型和文件大小是否符合标准<br />文件类型:".$type.<br />文件大小:.($_files["filedata"]["size"] / 1024) . " kb"; } function filekzm($a) { $c=strrchr($a,.); if($c) { return $c; }else{ return ; } } function getget($v)// 获取get { if(isset($_get[$v])) { return $_get[$v]; }else{ return ; } } function getpost($v)// 获取post { if(isset($_post[$v])) { return $_post[$v]; }else{ return ; } } ?>
教程链接:http://www.phprm.com/frame/php1005184.html
随意转载~但请保留教程地址★