现在的位置: 首页 > 综合 > 正文

使用swfupload小经验

2012年03月08日 ⁄ 综合 ⁄ 共 1444字 ⁄ 字号 评论关闭

SWFUpload是一个客户端文件上传工具,如果传统的文件上传方式不能满足你的需求,那么可以试试看这个咯。

swfupload的功能:

  • 在文件选择对话框中能够进行文件多选(当然还可以设置成单选)
  • 可以设置上传对话框中显示的文件类型和说明
  • 页面无刷新的上传(使用ajax方式post文件数据)
  • 提供上传进度的事件回调,实时显示上传进度(这个比较cool,无需频繁调用服务端代码获取上传进度哦)
  • 良好的浏览器兼容性
  • 采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等)
  • 对FLASH8和FLASH9播放器的支持

这里是swfupload的中文使用帮助,感谢译者的辛勤工作。

我第一次使用swfupload的时候,发现它和mootools的1.10版本有冲突:当IE7刷新或者关闭的时候会导致swfupload组件脚本出错,换用最新的mootools之后正常。

另外一个问题就是session,很多时候接收文件上传数据的代码需要根据当前session来进行权限处理。在IE中没什么问题,在firefox中会无法获取session,原因应该是flash处理cookie的方式有所不同,导致在firefox中swfupload无法post当前用户的cookie信息到服务端。解决方式也比较简单,就是自己获取cookie信息随着文件一并上传(flash9支持)即可。

asp.net中可以直接引用swfupload提供的global.asax来处理session信息,你只需要在创建swfupload对象的时候添加如下代码即可:

 1         var swfu;
 2         function initswfu()
 3         {
 4             swfu = new SWFUpload({
 5                 upload_url : "<%=Page.ResolveClientUrl("~/swfupload/upload.aspx")%>",
 6                 flash_url : "<%=Page.ResolveClientUrl("~/swfupload/swfupload_f9.swf")%>",
 7                 file_size_limit : "204800",
 8                 file_types : "*.rar;*.zip",
 9                 file_types_description : "打包文件",
10                 post_params : {
11                     "ASPSESSID" : "<%=Session.SessionID %>",
12                     "AUTHID" : "<%=Request.Cookies[FormsAuthentication.FormsCookieName].Value%>"
13                     },
14 

 

其中ASPSESSID是用户的sessionid,AUTHID是FormsAuthentication认证信息,如果你不用FormsAuthentication也可以去掉12行,当然如果你需要cookie中的其他自定义信息,就在这里添加并需要修改global.asax了。

 

 

抱歉!评论已关闭.