SWFUpload详解
SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。 ? 当前版本v2.2.0.1 官网示例:demo.swfupload.org 官方文档:http://demo.swfupload.org/Documentation/ 下载地址: https://code.google.com/p/swfupload/downloads/list 主要特点?? 可以同时选择多个文件 ?? 类似AJAX的无刷新上传 ?? 可以显示上传进度 ?? 良好的浏览器兼容性 ?? 兼容其他JavaScript库 (例如:jQuery,Prototype等) ?? 支持Flash 8和Flash 9及更高版本 ? ? ? 原理简介:开始配置准备工作:从官网下载的压缩包中,拿到以下文件(附件中有整理好的文件) SWFUpload v2.2.0.1 Coreswfupload.js SWFUpload v2.2.0.1 CoreFlashswfupload.swf SWFUpload v2.2.0.1 Samplesdemossimpledemojsfileprogress.js SWFUpload v2.2.0.1 Samplesdemossimpledemojshandlers.js SWFUpload v2.2.0.1 Samplesdemossimpledemojsswfupload.queue.js ? 放在指定文件夹中 deploymediajsswfupload deployjbossweb-tomcat41.sarMETA-INFmime.types ? swfupload.swf、swfupload.js是核心文件 handlers.js是事件处理 fileprogress.js是文件队列处理 mimetype.properties是mime类型码表 ? 从页面初始化到用户选择文件最后上传结束是这样的一个过程: a页面载入(初始化选择控件)—b用户选择多文件—c形成文件队列—d触发上传(队列中的文件依次上传)—e后台处理—f向前台返回结果 其中d-e-f将根据文件数量重复执行,从a-f过程中所有的动作都由事件来驱动,可以自定义捕获每个事件,所以对于程序员来说非常适合订制自己的上传界面。 ? SWFUpload官方对PHP支持比较好,JSP需要修改和移植,而为了适配公司的Struts 1.x更需要解决如下问题: 1.?????? 对表单验证失败的不进行上传,避免服务器资源浪费。 解决办法:用户批量选择完文件后,先存入队列,点击页面的提交按钮,先验证表单各项都正确无误,然后上传文件,最后进行提交。 2.?????? SWFUpload上传的文件使用file.getContentType()取得的MIME类型总是多媒体。 解决办法:使用MimetypesFileTypeMap用后缀名从资源文件中获取MIME类型。 gds.jap.affix.business. ManageAffixService.createAttachmentUseSWF(String aWorkID,String aSource) 3.?????? SWFUpload使用的编码格式是UTF-8,中文名称在GBK下会成乱码。 解决办法:把上传的文件名作为参数,后台用URLDecoder转码获取正确的文件名。 ? ? JSP页面?? 引入JS文件 ?? 定义初始化参数 ?? 声明、创建SWF对象 ?? 修改提交方式 Struts Form?? 声明接收FormFile的对象 ?? 声明获得附件最大限制的getter方法 ? Struts Action?? 从参数来获得上传的标识,进行上传的动作 ?? 从参数中获得上传文件名,进行转码 ?? 调用manageAffixService.createAttachmentUseSWF方法,解决MIME类型的问题 ? 附件上传gds.jap.affix.business. ManageAffixService.createAttachmentUseSWF(FormFile file,String fileName,String attachmentDesc,String clientIP) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |