在ApplicationContext.xml中添加:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes:10M -->
<property name="maxUploadSize" value="10485760"/> //最大上传文件大小限制
<property name="defaultEncoding" value="utf-8"></property>
</bean>
在controller中实现上传:
@RequestMapping(value = "/fileUpload" , method = RequestMethod.POST)
public String fileUpload(Model model, HttpServletRequest reqeust, HttpServletResponse response) throws FileUploadException, IOException, InterruptedException{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) reqeust;
CommonsMultipartFile orginalFile = (CommonsMultipartFile) multipartRequest.getFile("filename"); //filename是form表单的名字
if (orginalFile != null && !orginalFile.isEmpty()) {
String filename = orginalFile.getOriginalFilename();
DataOutputStream out = new DataOutputStream(new FileOutputStream(OpenstackUtil.getConfig("swift.fileupload") + File.separator + filename));// 存放文件的绝对路径
InputStream is = null;
try {
is = orginalFile.getInputStream();
byte[] buffer=new byte[is.available()];
is.read(buffer);
out.write(buffer);
} catch (IOException exception) {
exception.printStackTrace();
} finally {
if (is != null) {
is.close();
}
if (out != null) {
out.close();
}
}
return FILE_MODULE_HOME + "/tr";
}else {
log.info("upload file error");
return FILE_MODULE_HOME + "upload";
}
}
上传到数据库的blob字段
@RequestMapping(value = "/upload") public void addAnnouncements(TestVo testVo, HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html;charset=utf-8"); PrintWriter writer = null; try { writer = response.getWriter(); } catch (IOException e1) { log.error(e1.getMessage(), e1); return; } try { CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); MultipartFile file = null; if (commonsMultipartResolver.isMultipart(request)) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; file = multipartRequest.getFile("taskspacurl"); if (file == null || file.isEmpty() || file.getSize() == 0) {
} else { testService.createRecord(announcementsVo, file.getBytes(), file.getOriginalFilename()); } } writer.write(ServerUtil.builSuccessResponseString(null,"")); return; } catch (Exception e) { writer.write(ServerUtil.buildErrorResponseString(e.getMessage())); log.error(e.getMessage(), e); }} 下载blob文件testService.createRecord(testVo, null, null);
下载服务器端resources目录下的文件@RequestMapping(value="/downloadattachfile") public void downloadSubTaskspac (Model model, String id, HttpServletRequest request, HttpServletResponse response) { Test test = testService.findById(id); if (test!= null) { try { String fileName = test.getAttachFileName(); fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); response.addHeader("Content-Disposition", "attachment;filename="+fileName); response.setContentType("text/html;charset=utf-8"); response.setContentType("application/Unknown"); ByteArrayInputStream inputStream = new ByteArrayInputStream(test.getAttachFile().getBytes(1, (int)test.getAttachFile().length())); OutputStream os = response.getOutputStream(); byte[] buffer = new byte[1024]; int length = 0; while((length = inputStream.read(buffer)) != -1) { os.write(buffer, 0, length); } os.flush(); os.close(); inputStream.close(); } catch (Exception e) { log.error(e.getMessage(), e); } } }
@RequestMapping(value = "/downloadFile", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public void downloadActivex(HttpServletRequest request, HttpServletResponse response) { try { File file = new File(request.getServletContext().getRealPath("/") + "\\resources\\documents\\file.rar"); String filename = file.getName(); // 取得文件的后缀名。 //String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase(); InputStream fis = new BufferedInputStream(new FileInputStream(request.getServletContext().getRealPath("/") + "\\resources\\documents\\file.rar")); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); response.reset(); response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("UTF-8"), "ISO-8859-1")); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } }