SpringMVC图片上传与显示
@RestController @Scope("prototype") @RequestMapping("/xxxx/xxx/main") public class JobPicControl { @Autowired private xxxService xxxService;/** * @description 上传图片 * @param file * @param request * @return */ @RequestMapping(value = "/base/xxx/upload", method = RequestMethod.POST) public String uploadMap(@RequestParam(value = "file", required = false) MultipartFile file, @RequestParam(value = "xxx", required = false) String xxx, HttpServletRequest request) { Response response = new Response(); if (file.isEmpty()) { return "文件上传失败,请重试"; } else { System.out.println("========================================"); System.out.println("文件长度: " + file.getSize()); System.out.println("文件类型: " + file.getContentType()); System.out.println("文件名称: " + file.getName()); System.out.println("文件原名: " + file.getOriginalFilename()); System.out.println("========================================"); } String filePath = "/fileLibrary/jobTypePics/"; String realPath = request.getSession().getServletContext().getRealPath(filePath); String fileNewName = xxx+ ".jpg"; System.out.println("fileNewName:"+fileNewName); //保存 try { //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的 FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath, fileNewName)); } catch (Exception e) { e.printStackTrace(); return response.failure("更新图失败,请重试").toSimpleResult(); } return "成功"; } /** * @description 流的方式得到图片 * @param request * @param httpResponse */ @RequestMapping(value = "/base/xxx/getPic", method = RequestMethod.GET) public void getMapPic1(@RequestParam(value = "iconUrl", required = false) String jobIconUrl,HttpServletRequest request,HttpServletResponse httpResponse) { String realPath = request.getSession().getServletContext().getRealPath(iconUrl); String filePath = realPath; System.out.println("filePath:"+filePath); File file = new File(filePath); FileInputStream fis = null; try { httpResponse.setContentType("image/gif"); OutputStream out = httpResponse.getOutputStream(); fis = new FileInputStream(file); byte[] b = new byte[fis.available()]; fis.read(b); out.write(b); out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }