加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swfupload介绍

发布时间:2020-12-15 18:50:03 所属栏目:百科 来源:网络整理
导读:swfupload介绍一 ?????? 终于在天哪joyous的帮助下,花了一天的时间,搞明白大部分内容. swfupload(以下简称su)遇到的主要问题就是,版本不同造成的极大差异,现在的版本已经到2.1beta。我用的是2.02版,天哪用的是1.xx版。 差异具体体现在: lash_url : "../s

swfupload介绍一

?????? 终于在天哪joyous的帮助下,花了一天的时间,搞明白大部分内容. swfupload(以下简称su)遇到的主要问题就是,版本不同造成的极大差异,现在的版本已经到2.1beta。我用的是2.02版,天哪用的是1.xx版。

差异具体体现在:
lash_url : "../swfupload/swfupload_f8.swf"
upload_url: "../multiuploaddemo/upload.php",
function uploadSuccess(fileObj,server_data)

?????? 如果flash_url用的是f8.swf,那么upload_url要使用相对SWF的路径;如果用的是f9.swf,那么upload_url要使用相对当前程序页面(jsp,asp)的路径,就是这点,耽误了我很长时间. 如果要使用server_data传递返回值,也必须用f9.swf,这点也花了我不少时间. 不管怎样,su都提供的全部源代码,有问题可以自己研究,前提是你能像我一样看的懂,呵呵.

?????? su使用的是flash的上传功能(Flash.net.FileReference;),还用了ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口ExternalInterface(详见后文附录),

su超级好用,而且功能强大,可以一次上传多个文件,能在客户端检验文件类型和大小,还能在上传进度中进行控制,能在文件传完后得到后台反馈信息,有较好的debug对话框,比如看看它的高级示例:http://demo.swfupload.org/featuresdemo/index.php,目前唯一不足的可能是对中文文件名支持不好.我研究了半天它的flash as脚本,都没弄明白中文问题怎么改.

它的在线文档:http://demo.swfupload.org/Documentation/
下面具体讲讲su怎么用。
假设有一个前台页面upload.asp,一个后台接收文件的页面save.asp,还有su的核心文件swfupload.js,辅助处理脚本handlers.js。
1,这两个js,网上的源码里就有,核心js不用改. handlers可以直接用,也可以自己写,看各人本事了.
核心js里,主要是看SWFUpload.prototype.initSettings 初始化设置,很多参数该怎么写,可以参考它.
2,要在前台页面里调用这两个js,然后初始化swfu对象。
折叠 展开 JavaScript 复制代码
  1. <script type="text/javascript">??
  2. var swfu;??
  3. window.onload = function () {??
  4. ??? swfu = new SWFUpload({??
  5. ??? // Backend Settings ?
  6. ??? upload_url: "upload.asp",??? // Relative to the SWF file 就是这个地方误导了我 ?
  7. ??? file_post_name: "Filedata",?? // 文件对象的名称,默认Filedata,可以自己改.后台接收就靠它识别 ?
  8. ??? post_params: {"SESSID" : "<%=session.SessionID%>"},?? // 附加参数,版本2新功能 ?
  9. ?
  10. ??? // File Upload Settings ?
  11. ??? file_size_limit : "204",??? // 单位kb,限制文件大小 ?
  12. ??? file_types : "*.jpg",?? //允许的文件类型 ?
  13. ??? file_types_description : "JPG Images",//对话框里的文件类型 ?
  14. ??? file_upload_limit : "0",??
  15. ?
  16. ??? // Event Handler Settings - these functions as defined in Handlers.js ?
  17. ??? //? The handlers are not part of SWFUpload but are part of my website and control how ?
  18. ??? //? my website reacts to the SWFUpload events. ?
  19. ??? //? 事件处理,可以自己在handlers.js里面扩充,极大的方便了开发者 ?
  20. ??? //? 就是要在handlers里面定义如下的function,当然function里面可以什么也不干,或者用源代码自带的也行 ?
  21. ??? file_queue_error_handler : fileQueueError,??
  22. ??? file_dialog_complete_handler : fileDialogComplete,??
  23. ??? upload_progress_handler : uploadProgress,??
  24. ??? upload_error_handler : uploadError,??
  25. ??? upload_success_handler : uploadSuccess,??
  26. ??? upload_complete_handler : uploadComplete,??
  27. ?
  28. ??? // Flash Settings ?
  29. ??? flash_url : "js/swfupload_f9.swf",??? // Relative to this file 注意是f8还是f9 ?
  30. ?
  31. ??? custom_settings : {??
  32. ??????? upload_target : "divFileProgressContainer"?
  33. ??? },??
  34. ??????
  35. ??? // Debug Settings 是否打开调试信息,默认false ?
  36. ??? debug: true?
  37. ??? });??
  38. }??
  39. </script>?

下面是表单的写法,无需input type=file的写法
XML/HTML 复制代码
  1. <form>?
  2. ??? <button id="btnBrowse" type="button" style="padding: 5px;" onclick="swfu.selectFiles(); this.blur();"><img src="image/page_white_add.png" style="padding-right: 3px; vertical-align: bottom;">Select Images <span style="font-size: 7pt;">(2 MB Max)</span></button>?
  3. </form>?
3,后台save.asp.
其实如果你做过普通的文件上传,这里就很简单,不管是jsp,asp,php,基本原理都一样. 前台swf得到文件后,还是用post方式提交给后台,文件对象默认名为Filedata. 比如用asp的无组件文件上传的处理写法如下
ASP/Visual Basic 复制代码
  1. <!--#include FILE="upload_5xsoft.inc"-->???
  2. <%??
  3. set upload=new upload_5xsoft???
  4. for each formName in upload.objFile???
  5. ? set file=upload.file("Filedata")????
  6. ? file.saveAs Server.mappath(file.FileName)??
  7. ? set file=nothing??
  8. next??
  9. set upload=nothing??
  10. response.write "ok"?
  11. %>??
?????? java里怎么处理呢? 其实也已有,比如用struts,在actionform里有一个名为Filedata的FileItem对象即可.
php和aspx就不讲了,官方源文件就是php的例子,也有aspx的例子.

4,返回结果如何显示?
比如上面第三步返回一个结果"ok". 在handlers里写上
JavaScript 复制代码
  1. function uploadSuccess(fileObj,server_data) {??
  2. ??? try {??
  3. ??????? document.write( server_data);??
  4. ??? } catch (ex) { this.debug(ex); }??
  5. }?
就这样简单.只要知道原理,你可以写出更复杂的效果.官方源代码提供了根据上传图片生成缩略图并马上显示的例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读