本文共 4308 字,大约阅读时间需要 14 分钟。
<!-- 会议纪要 --> <action name="subjectRecordAction_*" class="subjectRecordAction" method="{1}"> <!-- 可以更改fileUpload拦截器的属性值来限定上传文件的内容类型,上传文件的大小 --> <interceptor-ref name="defaultStack"> <param name="allowedTypes">application/vnd.ms-powerpoint</param> <!-- <param name="fileUpload.allowedTypes">image/png,image/gif,image/jpeg,image/jpg,image/x-png, image/pjpeg</param> --> <param name="fileUpload.maximumSize">10*1024*1024</param> </interceptor-ref><!下载> 配置 <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=utf-8</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">8192</param> </result> <result name="fail">jsp/upload/submit_error.jsp</result>
</action>
public String saveRecord() throws IOException{
user = (User) this.getSession().getAttribute("user"); this.getRequest().setCharacterEncoding("utf-8"); this.getResponse().setCharacterEncoding("utf-8"); // System.out.println("file name:" + fileUploadFileName);//文件名称 // System.out.println("temp file name:" + fileUpload.getName()); //如果要存放到web服务器中本项目的某个目录下 //根据服务器的文件保存地址和原文件名创建目录文件全路径 //图片先存放在tomcat目录下 String destPath = ServletActionContext.getServletContext().getRealPath("/projectfiles")+"\\"; String filePath="projectfiles";//文件保存路径 //stytemMyfile 文件对象 subjectRecord 会议纪要 stytemMyfile.setOldName(fileUpload.getName());//自动生成的名字 stytemMyfile.setUploader(user.getUserAccount()); stytemMyfile.setUploadTime(new Date()); // System.out.println(destPath); File diretoryFile = new File(destPath); if(diretoryFile.exists()){ String[] fileNameStrings = diretoryFile.list(); List<String> fileNameList = new ArrayList<String>(); int sameNameFileCount = 0; for(String fileNameItemString : fileNameStrings){ if(FileUtil.isSameFile(fileNameItemString,fileUploadFileName)){ sameNameFileCount = sameNameFileCount + 1; } fileNameList.add(fileNameItemString); } fileUploadFileName = FileUtil.reNameFile(fileUploadFileName, sameNameFileCount, fileNameList); } File dest = new File(destPath, fileUploadFileName); //服务器的文件 String path = filePath+"\\"+fileUploadFileName; //真实路径 //System.out.println("filePath:"+path); FileUtils.copyFile(fileUpload, dest);//完成了文件的拷贝工作 stytemMyfile.setId(UUIDGenerator.getUUID()); stytemMyfile.setNewName(fileUploadFileName);//直接存名字 stytemMyfile.setFileSize(dest.length()); stytemMyfile.setFileContentType("application/pdf"); stytemMyfile.setFileExtention(".pdf"); stytemMyfile.setDir(DateUtil.getToday());//得到当前日期 stytemMyfile.setUploader(user.getUserAccount()); stytemMyfile.setUploadTime(new Date()); systemMyFileService.save(stytemMyfile); if(stytemMyfile!=null){ subjectRecord.setMyfileId(stytemMyfile.getId()); subjectRecord.setId(UUIDGenerator.getUUID()); subjectRecord.setUpdated(user.getUserAccount()); subjectRecord.setUpdatedate(new Date()); subjectRecordService.save(subjectRecord); } return "saveRecord"; } public String downloadFile() { //System.out.println("执行下载"); try{ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); String id = this.getRequest().getParameter("id"); subjectRecord = subjectRecordService.get(SubjectRecord.class,id); if(subjectRecord!=null) { stytemMyfile = systemMyFileService.get(SystemMyFile.class, subjectRecord.getMyfileId()); if(stytemMyfile!=null) { String filePathString = "projectfiles"+"\\"+stytemMyfile.getNewName(); setFileName(stytemMyfile.getNewName()); // System.out.println(filePathString); InputStream fileStream = ServletActionContext.getServletContext().getResourceAsStream(filePathString); if (fileStream != null) { String agent = request.getHeader("USER-AGENT"); if (-1 != agent.indexOf("Firefox")) { // Firefox fileName = "=?UTF-8?B?" + (new String(org.apache.commons.codec.binary.Base64.encodeBase64(fileName.getBytes("UTF-8")))) + "?="; } else if (-1 != agent.indexOf("Chrome")) {// Chrome fileName = new String(fileName.getBytes(), "ISO8859-1"); } else {// IE7+ fileName = java.net.URLEncoder.encode(fileName, "UTF-8"); fileName = StringUtils.replace(fileName, "+", "%20");// 替换空格 } setFileName(fileName); setInputStream(fileStream); }else{ return "fail"; } } } return "success"; }catch (Exception e) { e.printStackTrace(); return "fail"; } } 具体的自己可以参考改写。转载地址:http://afjdi.baihongyu.com/