• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

织梦吧 - dedecms,网站模板,建站教程,图片素材免费下载

DedeCMS视频教程
当前位置: 织梦吧 > CMS教程 > discuz教程 >

使用家园相册flash进行批量上传功能的分析

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-07点击:
 

最近在做的一个工具需要有批量图片上传功能,所以就分析了一下家园中flash批量上传功能,以便给自己的模块添加这个功能。
批量上传flash的页面的url是
 

 
  1. home.php?mod=spacecp&ac=upload&op=flash&albumid=0 

通过URL分析到,我们要找的代码在 home_spacecp.php 中,我们看到在这个文件最后一行,把ac这个参数作为名称包含了一个include文件,ac参数的值是 upload ,所以我们要找的文件是 spacecp_upload.php
 

 
  1. require_once libfile('spacecp/'.$ac, 'include'); 

再继续看这个文件,这里面虽然也有近三百行,不过我们只关注flash批量上传,所以就在这里面摘出所需要的东西就好了。其中包含了模板文件 spacecp_upload.htm  224行开始的代码就是op = flash进入的流程
 

 
  1. </div> 
  2. <div class="bm"> 
  3. <script type="text/javascript"> 
  4. document.write(AC_FL_RunContent(  
  5. 'width', '100%', 'height', '400',  
  6. 'src', '{IMGDIR}/album_upload.swf?config=$config&albumid=$_GET[albumid]',  
  7. 'quality', 'high', 'wmode', 'transparent'  
  8. ));  
  9. </script> 

这里面调用了flash文件,并且给flash文件传入了2个参数,参数的url是config=$config&albumid=$_GET[albumid]',
config 和 albumid
albumid就是我们进入批量上传flash时候url中带的albumid
config是一个php变量,这个我们在 home_spacecp.php 文件中找。
 

 
  1. $config = urlencode($_G['siteroot'].'home.php?mod=misc&ac=swfupload&op=config'.($_GET['op'] == 'cam'? '&cam=1' : '')); 

$config 传入的是一个路径,我们看看这个路径是什么。在浏览器中打开这个路径。后面跟的config'.($_GET['op'] == 'cam'? '&cam=1' : ''));参数我们暂时先忽略。
打开后出现的是一个xml文件

 
 


看xml文件的内容大概知道了,这个应该是flash上传框的配置文件,包括了它的菜单按钮的文字等。
我们看这段的php文件。文件是 home_misc.php 其中没有什么有用的内容,依旧包含了一个include文件 misc_swfupload.php
我们看这个文件。
这个文件就是flash批量上传的核心控制文件了。其中可以分为4块内容
第1块 1-34行,基本参数配置,
第2块36-53行,上传完成后的后续处理代码
第3块53-76行,生成传入flash的配置参数
第4块77-96行,上传图片代码
其他
原理是这样,flash作为一个客户端执行post ,post的地址就是我们config中的uploadurl,看下也就是现在这个文件自己。
所以我们说上传的控制也就是这个php文件了。第一部分有
 

 
  1. if(!empty($_POST['uid'])) { 

这样开始的一段代码,就是处理post来的uid,因为flash post过来之后。就没有$_G等信息存在了。所以要在这里判断一下用户权限,并且设置一下。然在第四块,对$_FILES 进行处理,在这里用的是一个pic_save函数,我们查一下可以查到。函数里调用了discuz 的upload类进行文件上传。之后返回一个数组$uploadfiles。根据返回数组的值,我们判断上传是否成功。并且设置状态$status
根据状态位,我们输出flash的配置参数,其中还涉及到了一个文件,刚才没有提到,misc_swfupload.htm 这个文件是一个xml的模板文件,根据我们 misc_swfupload.php 中的配置信息,输出相应的xml
好了flash批量上传大体就是这个样子,其中涉及到一些细节的参数没有提到,感兴趣的可以自己去试一试,哪个参数是做什么的。让这个flash批量上传功能完全为我们自己所用。

 

标签:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 tom@tiptop.cn ,  QQ