spring mvc 上传文件代码:
@RequestMapping(value = "/attach/upload") @ControllerLogAnnotation(moduleName="服务管理-合同管理-附件",option="上传") public void upload( String contractId, @RequestParam(value = "file", required = false) MultipartFile file, RedirectAttributes redirectAttributes, HttpServletResponse response) { String fileName = file.getOriginalFilename(); JSONObject jsonObject= new JSONObject(); try { InputStream fileInputStream = file.getInputStream(); String extension = FilenameUtils.getExtension(fileName); ContractAttach attach = new ContractAttach(); attach.setAttachName(fileName); attach.setContractId(contractId); byte[] attachContent =FileCopyUtils.copyToByteArray(fileInputStream); attach.setAttachContent(attachContent); service.addObj(attach); jsonObject = JsonResultBuilder.success(true).msg("上传成功!").json(); } catch (Exception e) { // redirectAttributes.addFlashAttribute("message", "流程部署失败!"); jsonObject = JsonResultBuilder.success(false).msg("上传失败!").json(); logger.error("上传失败!", e); } writeJson(response,jsonObject); }
数据mysql,直接写大数据到数据库的。
entity:
@Entity @Table(name = "t_contract_attach") public class ContractAttach implements java.io.Serializable { // Fields private String id; private String contractId; // private String attach; // @Lob // private Blob attachContent; //hibernate4已经取消createBlob private byte[] attachContent; private String attachName; .. @Column(name = "contract_id") public String getContractId() { return contractId; } @Column(name = "attach") public byte[] getAttachContent() { return attachContent; } }
表
此时可以上传任意文件,zip,rar,txt,jpg等等。但是如果上传文件过大会报错:mysql大数据默认只能最大1M数据,需要修改max_allowed_packet ,怎么改,看MySQL max_allowed_packet设置及问题。 同时应该也设置spring mvc里面的参数
<!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="${web.maxUploadSize}" /> </bean>
-------------------------------
下载没什么好说的,看代码:
前台弄个href连接到后台就行
@RequestMapping(value = "/attach/exportFile/{attachId}") @ControllerLogAnnotation(moduleName="服务管理-合同管理-附件",option="下载") public ResponseEntity<byte[]> exportFile( @PathVariable("attachId")String attachId, HttpServletResponse response) throws IOException { ContractAttach attach = service.uniqueEntity(ContractAttach.class, "id", attachId); String fileName = attach.getAttachName(); byte[] attachContent = attach.getAttachContent(); HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment", fileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(attachContent, headers, HttpStatus.CREATED); }
下载参考:http://blog.csdn.net/clj198606061111/article/details/20743769