- 浏览: 64231 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (46)
- jvm调优相关 (3)
- java编程语言 (6)
- jQuery &css (11)
- hsf ;spring (3)
- Eclipse 相关 (1)
- 缓存 jvm相关 (2)
- 文件处理 (7)
- html post请求乱码问题 (0)
- java 表单字符处理问题 (2)
- ibitas相关 (2)
- TCP/IP相关 (1)
- 网站架构 (1)
- 编码规范和代码重构 (2)
- spring架构&java web框架原理 (2)
- java web日志相关 (1)
- 网络编程 (1)
- 其他收藏 (0)
- iReport;报表 (0)
- 包和类加载冲突 (0)
- 数据库相关 (1)
- 心得;分享;其他 (1)
- web安全相关 (0)
- 线上问题总结和处理 (0)
- mtee (0)
- xu (0)
- 可心一点 (0)
- 爬虫 (0)
最新评论
本例的目的是把本地文件以字节数组的形式保存在服务器的数据库中。
casemodify.vm
<div class="samplePic" id="attachmentId"> <div id="attachmentId2" class="attachmentId2Class"> #foreach($fileNameAndId in $attachmentNameList) <div class="uploadSamplePic" id="abcd$!{fileNameAndId.id}"><span style="color:blue;line-height:20px;">$!{fileNameAndId.summary}</span></div> #if("$!{fileNameAndId.summary}"!="") <div class="deletefile" id="deleteAttachmentFile$!{fileNameAndId.id}"><span onClick="confirm_delete_attachment('$!{fileNameAndId.id}','$!{fileNameAndId.summary}')">删除</span></div>#end #end </div> <ol class="files" ></ol> <div class="casefilepart2" id="dialog-upload" title="导入文件" > <div class="fb"> <span><input id="button4" type="file" /> </span><span><input class="submit" type="button" onClick="doExecuteUploadAttachment()" value="上传" /></span> </div> </div> </div>
<!-- AJAX Upload script doesn't have any dependencies--> <script type="text/javascript" src="../source/js/fileUpload/ajaxupload.3.6.js"></script> ... <script type="text/javascript" > var riskId = $("#riskId").val(); var arkUser = $("#arkUser").val(); new AjaxUpload('#button4', { action: 'uploadAttachment.action', data:{"riskId":riskId,"arkUser":arkUser}, name: 'myAttachmentFile', onComplete :function(attachmentFile,response){ if(response){ alert(response); }else{ $("<div class='uploadSamplePic'> </div> ").appendTo($('#attachmentId .files')).text(attachmentFile); } } }); </script>
@RequestMapping("/uploadAttachment.action") public ModelAndView handleAttachmentUpload(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mav = new ModelAndView("ajaxText"); String riskId = request.getParameter("riskId"); String arkUser = request.getParameter("arkUser"); List<String> fileNames = riskRelationDao.getAttachmentNameListBy( riskId, Constants4BizType.RELATION_FILE_ATTACHMENT_BUNINESS_TPYE); if (fileNames != null && fileNames.size() >= 10) { mav.addObject("errorInfo4FileAttachment", "上传附件超过10个,请删除后重新上传!"); return mav; } Map<String, Object> retMap = this.executeFileUpload(request); if (retMap.get("hadRetError") != null && retMap.get("hadRetError").equals("true")) { mav.addObject("errorInfo4FileAttachment", retMap.get("errorInfo4FileAttachment")); mav.addObject("errorInfo4FileStream", retMap.get("errorInfo4FileStream")); return mav; } return mav; }
处理上传文件的逻辑:
public Map<String, Object> executeFileUpload(HttpServletRequest request) throws Exception { Map<String, Object> retInfo = new HashMap<String, Object>(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 其实就是ajax中传入的name参数对应的值 String inputFileName = null; // 转型为MultipartHttpRequest: if (multipartRequest.getFileNames().hasNext()) { inputFileName = multipartRequest.getFileNames().next(); } if (StringUtil.isNullOrEmpty(inputFileName)) { retInfo.put("errorInfo4SamplePic", "未发现上传文件"); // 'hadRetError'告诉函数的调用方被调函数有没有逻辑和要求错误 retInfo.put("hadRetError", "true"); return retInfo; } // 获得文件: MultipartFile multipartFile = multipartRequest.getFile(inputFileName); // 获得文件名: String fileName = multipartFile.getOriginalFilename(); // 过滤文件特殊字符,因为这些在下载时的url请求参数中属于url固有的特殊字符+/?%#&= String regEX = "[+%#&=()]"; Pattern p = Pattern.compile(regEX); Matcher m = p.matcher(fileName); fileName = m.replaceAll("").trim(); String fileNameToLower = fileName.toLowerCase(); boolean pictrueFormat = fileNameToLower.endsWith(".jpg") || fileNameToLower.endsWith(".jpeg") || fileNameToLower.endsWith(".gif") || fileNameToLower.endsWith(".png") || fileNameToLower.endsWith(".bmp"); boolean attachmentFileFormat = pictrueFormat || fileNameToLower.endsWith(".doc") || fileNameToLower.endsWith(".docx") || fileNameToLower.endsWith(".xlsx") || fileNameToLower.endsWith(".pdf") || fileNameToLower.endsWith(".xls") || fileNameToLower.endsWith(".rar") || fileNameToLower.endsWith(".zip") || fileNameToLower.endsWith(".pptx") || fileNameToLower.endsWith(".ppt") || fileNameToLower.endsWith(".txt"); // ajax请求中根据是否是"myPicfile"还是"myAttachmentFile"区别图片上传还是附件上传 if (inputFileName.equals(AJAX_UPLOAD_PIC_FILE_TYPE) && !pictrueFormat) { retInfo.put("errorInfo4SamplePic", "请上传图片格式的文件(支持.jpg .jpeg .gif .png .bmp格式),上传格式错误!"); retInfo.put("hadRetError", "true"); return retInfo; } if (inputFileName.equals(AJAX_UPLOAD_ATTACHMENT_FILE_TYPE) && !attachmentFileFormat) { retInfo.put( "errorInfo4FileAttachment", "请上传下列格式的文件(支持.jpg .jpeg .gif .png .bmp .doc .rar .zip .txt docx .xlsx .xls.pdf .ppt .pptx格式 ),上传格式错误!"); retInfo.put("hadRetError", "true"); return retInfo; } if (inputFileName.equals(AJAX_UPLOAD_PIC_FILE_TYPE) && multipartFile.getSize() > MAXPICTURESIZE) { retInfo.put("errorInfo4SamplePic", "上传图片文件大小超过20M,上传失败!"); retInfo.put("hadRetError", "true"); return retInfo; } if (inputFileName.equals(AJAX_UPLOAD_ATTACHMENT_FILE_TYPE) && multipartFile.getSize() > MAXATTACHMENTSIZE) { retInfo.put("errorInfo4FileAttachment", "上传附件大小超过20M,上传失败!"); retInfo.put("hadRetError", "true"); return retInfo; } InputStream is = null; ByteArrayOutputStream byteArrayOutputStream = null; try { is = multipartFile.getInputStream(); byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; // int data; // while ((data = is.read()) != -1) { // byteArrayOutputStream.write(data); // } int len = 0; while ((len = is.read(buffer)) > 0) { byteArrayOutputStream.write(buffer, 0, len); } } catch (IOException e) { retInfo.put("errorInfo4FileStream", "读取上传文件流失败!"); // 异常时对流关闭 is.close(); byteArrayOutputStream.close(); retInfo.put("hadRetError", "true"); return retInfo; } byte[] uploadPicureAttachment = byteArrayOutputStream.toByteArray(); retInfo.put("uploadPicureAttachment", uploadPicureAttachment); retInfo.put("uploadFileName", fileName); return retInfo; }
如果需要上传组件可以邮件联系。
js脚本对上传文件和删除文件的动态效果生成,而不需要进行页面的刷新:
function confirm_delete_attachment(id,str) { var fileName=encodeURIComponent(str); if(!window.confirm("亲,您确定删除?")){ return; } $ .post('/deleteAttachment.action?token='+Math.random()*10000000, {'fileName':fileName,'riskId':riskId}, function(data){ alert(data); $("#deleteAttachmentFile"+id).remove(); $("#abcd"+id).remove(); }); }
function doExecuteUploadAttachment(){ var fileName=$('.files .uploadSamplePic').html(); $ .post('/getUploadedFileId.action?token='+Math.random()*10000000, {'fileName':fileName,'riskId':riskId}, function(data){ var tem="<div class='uploadSamplePic' id='abcd"+data+"'><span style='color:blue;line-height:20px;'>"+fileName+"</span></div>"; $('.files .uploadSamplePic').remove(); $("#attachmentId2").append(tem+"<div class='deletefile' id='deleteAttachmentFile"+data+"'><span onClick=\"confirm_delete_attachment(\'"+data+"\',\'"+fileName+"\')\">删除</span></div>"); }); }
- js.rar (88.8 KB)
- 下载次数: 5
发表评论
-
java读取配置文件的几种方法
2012-09-20 17:02 1181在java web开发中,常常 ... -
java 服务端获取文件路径的一些方法
2012-09-11 17:33 1238在上传文件时,会把在w ... -
java生成图片缩略图方法
2012-09-10 17:33 781在一些详情页面中,可能需要对上传到服务器中的图片生成以缩略图的 ... -
从服务器下载文件
2012-09-10 16:21 991文件以字节数组存在数据库中,下载的时候从服务器端下载到本地: ... -
jquery post 中文乱码解决方案
2012-09-06 19:36 2402在很多spring mvc的vm页面中,对于上传的中 ... -
文件上传于下载
2012-08-27 16:00 0文件的上传和下载都是Web应用程序中很常见的功能,比如在论 ... -
servlet 文件下载
2012-08-27 15:57 643File f = new File(filePath); ...
相关推荐
SWFUpload多文件上传示例SWFUpload多文件上传示例
[上传下载]ASPX多文件上传示例源码_51aspxuploads.zip源码ASP.NET网站源码打包下载[上传下载]ASPX多文件上传示例源码_51aspxuploads.zip源码ASP.NET网站源码打包下载[上传下载]ASPX多文件上传示例源码_51aspxuploads...
文件上传示例(无刷新,美观,实用。多图文件,附件上传等等 上传功能 很好用的!(*^__^*)
SpringMVC文件上传示例
Android 手机文件上传示例.zip
51aspx多文件上传示例源码 可以同时批量上传文件(包括图片),目前还不支持大文件上传和进度条显示 下一步将开发 友情提示: 如果遇到压缩文件加密,默认密码为51aspx.com Asp.net源码网再次声明:该代码仅供...
SpringBoot中实现批量文件上传示例代码SpringBoot中实现批量文件上传示例代码
springboot技术中单文件和多文件上传示例,有完整项目工程、pom.xml和所有代码类,启动springboot即可测试使用。
SprignBoot中实现文件上传示例代码
自己做的asp.net文件上传示例 代码比较简单 vs2005打开直接F5运行 各位可以根据自己的需求做一些修改
多文件上传示例!!!!欢迎下载 多文件上传示例!!!!欢迎下载
一个jquery 的多文件上传示例,asp.net 版本,基本都有了
ASPX多文件上传示例源码_一键上传下载
源码参考,欢迎下载
Vue+SpringBoot前后端交互实现文件上传示例代码;Vue+SpringBoot前后端交互实现文件上传示例代码;Vue+SpringBoot前后端交互实现文件上传示例代码
asp.net 带有进度条的文件上传示例
手机文件上传示例.zip