SWFUPLOAD的使用(java版)
很多开发的时候会遇到附加上传功能,最近项目中使用的是uploadswf插件,SWF主要是多文件无刷新上传,利用flash完成多文件上传操作下面把java开发中使用简单的介绍一下: ? Jsp页面代码: 先在头部引入要使用到的样式文件和js文件 <linkhref="${ctx}/resource/uploadswf/default.css"rel="stylesheet"type="text/css"/> ??? <scripttype="text/javascript"src="${ctx}/resource/uploadswf/swfupload.js"></script> ??? <scripttype="text/javascript"src="${ctx}/resource/uploadswf/swfupload.queue.js"></script> ??? <scripttype="text/javascript"src="${ctx}/resource/uploadswf/fileprogress.js"></script> ??? <scripttype="text/javascript"src="${ctx}/resource/uploadswf/handlers.js"></script> ? <!—使用的js方法 -->? ??? <scripttype="text/javascript"> ?????? var upload1; ?????window.onload = function() { ?????????? upload1 = new SWFUpload({ ????????????? // Backend Settings ????????????? upload_url: "${ctx}/suqiu/topical-upload.action",//上传文件的action ????????????? file_post_name: "file", ????????????? post_params: {"contentId" :$("#msgContentId").val()}, ??????????????? ?//要使用到的参数,contentId在后台设置set get方法,不传就为空 ????????????? // File Upload Settings ????????????? file_size_limit : "10240",? // 100MB大小自己设置 ????????????? file_types : "*.*", ????????????? file_types_description :"All Files",//文件类型自己控制 ????????????? file_upload_limit :"10", ????????????? file_queue_limit :"10", ? ????????????? // Event HandlerSettings (all my handlers are in the Handler.js file) ????????????? file_dialog_start_handler : fileDialogStart, ????????????? file_queued_handler : fileQueued, ????????????? file_queue_error_handler : fileQueueError, ????????????? file_dialog_complete_handler : fileDialogComplete, ????????????? upload_start_handler : uploadStart, ????????????? upload_progress_handler : uploadProgress, ????????????? upload_error_handler : uploadError, ????????????? upload_success_handler : uploadSuccess, ????????????? upload_complete_handler : uploadComplete, ? ????????????? // ButtonSettings ????????????? button_image_url :"${ctx}/resource/uploadswf/XPButtonUploadText_61x22.png", ????????????? button_placeholder_id :"spanButtonPlaceholder1", ????????????? button_width: 61, ????????????? button_height: 22, ????????????? button_text:"添加附件", ????????????? button_text_left_padding:5, ????????????? // Flash Settings ????????????? flash_url : "${ctx}/resource/uploadswf/swfupload.swf", ???????????? custom_settings : {????????????????? progressTarget :"fsUploadProgress1", ????????????????? cancelButtonId :"btnCancel1" ????????????? }, ????????????? ????????????? // Debug Settings ????????????? debug: false ?????????? }); ?????????? //$("#SWFUpload_0").hide(); ?????? } ?????? ?????? function deleteAttach(attachId,value){ ?????????? if(confirm("确定要删除该附件吗?")){ ????????????? $.post("${ctx}/suqiu/topicattach-delete.action?key=" ???????????????????? + attachId,function(data) { ???????????????????????? if (data =="no") { ??????????????????????????? ???alert("删除失败"); ??????????????????????????? }else{ ??????????????????????????????? alert("删除成功"); ??????????????????????????????? window.location.reload(); ???????????????????????? } ????????????? ? } ? ? ???????? );?????????? } ?????? } //说明:插入(上传成功)、删除等方法在handlers.js里面定义,页面里不重写的话使用默认的,重写可以自己定义和传不同的参数 <!—页面代码 -->? <tr> ????????????? <tdclass="text"> 附件:</td> ????????????? <tdcolspan='2'> ????????????? <divstyle="padding-left:5px;"> ????????????? <spanid="spanButtonPlaceholder1"></span> ????????????? <inputid="btnCancel1"type="button"value="取消上传"onclick="cancelQueue(upload1);"disabled="disabled"style="margin-left:2px;height:22px;font-size: 8pt;"/> ????????????? <br/> ??? ??????????? <div class="fieldset flash"id="fsUploadProgress1"> ??? ???????????? ?<s:iterator value="topicalContent. Attachs"status="u"> ??? ?????????????? <divclass="progressWrapper" id='FWSWFUpload<s:propertyvalue="#u.index"/>' style="opacity:1;"> ???????????????????? <div class="progressContainerblue"> ???????????????????? ? <aclass="progressCancel" href="#"style="visibility:visible;"> </a> ???????????????????????? <div class="progressName"><inputtype="button" class="ico_attbig"><s:propertyvalue="attachName" /></div> ???????????????????????? <div class="progressBarStatus"> ???????????????????????? <a onclick="deleteAttach('<s:propertyvalue="attachId"/>',this);" href="#this">删除</a></div> ???????????????????????? <div class="progressBarComplete"style=""></div> ????????????????? ??? </div> ?????? ?????????? </div> ?????? ??????????</s:iterator> ????????????? </div> ????????????? </div> ????????????? </td> ?????????? </tr>? ??? 以上循环遍历出来了已经存在的附件,然后可以继续上传和删除。 ? 后台action代码: import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import net.sf.json.JSONObject; @Action(value="topicalcontent-upload") ??? public String saveAttach(){ ??????? TopicContentAttach noticeAttachs=newTopicContentAttach(); ??????? TopicalContent obj=null; ??????? if(msgContentId!=null&&StringUtils.isNotBlank(msgContentId)){ ?????? ?obj = topicalContentService.getTopicalContent(msgContentId); ??????? }else{ ??????? obj= new TopicalContent(); ??????? } ?????? noticeAttachs.setTopicalcontent(obj); ?????? String nameflll=upload(); noticeAttachs.setAttachUrl(FilePathSptUtil.UPLOAD_CMS+FilePathSptUtil.URL_SPT+FilePathSptUtil.CMS_ZHUANTI+ ????????????? ?FilePathSptUtil.URL_SPT+DateUtil.formatDateToString(new Date(),"yyyy-MM")+FilePathSptUtil.URL_SPT+nameflll); ?????? noticeAttachs.setAttachName(fileFileName); ?????? noticeAttachs.setUploadOriginName(fileFileName); ?????? String fileExtend = fileFileName.substring(fileFileName.lastIndexOf(".")+1,fileFileName.length()); ?????? noticeAttachs.setAttachType(fileExtend); ?????? topicContentAttachService.save(noticeAttachs); ?? ?? return renderText( "{????attachId:"" +noticeAttachs.getAttachId()+ "",??attachName:"" +noticeAttachs.getAttachName()+ ""?,?? attachUrl:"" +noticeAttachs.getAttachUrl()+ ""?}" );??? } ??? ?private Stringupload(){ ?????? SimpleDateFormat formater =new SimpleDateFormat("yyyyMMddhhmmssSSSS"); ?????? String filename=formater.format(new Date()); ?????? String fileExtend = fileFileName.substring(fileFileName.lastIndexOf(".")+1,fileFileName.length()); ?????? String root= FilePathSptUtil.UPLOAD_ROOT_PATH+FilePathSptUtil.UPLOAD_CMS+SPT+FilePathSptUtil.CMS_ZHUANTI+SPT+ ????????????? ? DateUtil.formatDateToString(new Date(),"yyyy-MM"); ?????? String fullName=filename+"."+fileExtend; ?????? String dstPath = root+SPT+fullName;???//全路径 ? ??? ??? File dirFile = new File(root); ?????? boolean isDir = dirFile.isDirectory(); ?????? if(!isDir){//目录不存在则先建目录 ?????????? try{ ????????????? dirFile.mkdirs(); ?????????? }catch (Exception e) { ????????????? File delFile = new File(root+SPT +fullName ); ????????????? deleteExitsFile(delFile); ?????????? } ?????? } ?????? FileUtil.copyFile(file.getPath(),dstPath);//上传文件 ?????? return fullName; ??? } ??? private?voiddeleteExitsFile(File file) { ?????? if(file.exists() && file.isFile()){ ?????????? file.delete(); ?????? } ??? } ? 其中一些常量变量定义好: ??? private StringfileFileName; ??? private Filefile; ??? private StringcontentId; ??? privatestaticfinal StringPATH =FilePathSptUtil.UPLOAD_ROOT_PATH; ??? privatestaticfinal StringSPT=File.separator; ? // UPLOAD_ROOT_PATH在FilePathSptUtil类中定义,从配置文件读取的路径 ??? UPLOAD_ROOT_PATH =prop.getProperty("upload.root.path","/"); public StringgetContentId() { ?????? return contentId; ??? } publicvoidsetContentId(String contentId) { ?????? this.contentId = contentId; ??? } public File getFile() { ?????? returnfile; ??? } publicvoid setFile(File file){ ?????? this.file = file; ??? } ??? public String getFileFileName() { ?????? returnfileFileName; ??? } publicvoidsetFileFileName(String fileFileName) { ?????? this.fileFileName = fileFileName; ??? } 其中在struts2中在非IE内核的浏览器里会提示上传错误报302错误,接下来解决。 Upload_url:”${ctx}/suqiu/topicalcontent-upload.action;jsessionid=<%=request.getSession().getId()%>”; ? 附件下载: http://download.csdn.net/detail/shiyuezhong/4552201(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |