1、第一步:确定解决思路。1、使用技术springmvc,jsp中主要是HTML和js2、一次上传,一般借助于表单同步提交实现直接提交上传3、两次上传3.1 借助表单同步提交,提交上传失败后返回原提交页面保持原提交数据3.2 上传成功后再修改页面重新上传3.3 异步处理提交上传文件借助于ajax提交失败后提示重新上传。思路基本相同,不过一般上传都会将文件与具体的表数据关联且重新上传只是修改关联,不会真的删除文件。
2、第二步:代码实现。1、默认搭建好springmvc环境。2、编写代码。主要分为前端上传页面,后台上传控制器。代码如下@Co荏鱿胫协ntroller@RequestMapping(value="/menu")public class MenuController {@RequestMapping(value="/toupload") public ModelAndView toUpload(HttpServletRequest request,HttpServletResponse response,MenuModel menu){ ModelAndView mv = new ModelAndView(); mv.setViewName("/menu/toupload"); return mv; }//处理文件上传 @RequestMapping(value="/testuploadimg", method = RequestMethod.POST) public @ResponseBody String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) { String fileName = file.getOriginalFilename(); String filePath ="d:/img"; if (file.isEmpty()){ return "文件为空!"; } try { uploadFile(file.getBytes(), filePath, fileName); } catch (Exception e) { // TODO: handle exception } //返回json return "uploadimg success"; } public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception { File targetFile = new File(filePath); if(!targetFile.exists()){ targetFile.mkdirs(); } FileOutputStream out = new FileOutputStream(filePath+fileName); out.write(file); out.flush(); out.close(); }
3、第三步:测试单次上传。打开页面选择图片上传
4、第四步:测试2次上传。修改java代码://处理文件上传 @RequestMapping(value="/testuploadimg", method = RequestMethod.POST) public String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) { String fileName = file.getOriginalFilename(); String filePath ="d:/img"; if (file.isEmpty()){ return "文件为空!"; } try { uploadFile(file.getBytes(), filePath, fileName); } catch (Exception e) { // TODO: handle exception } //返回页面 return "upload"; }重复操作,上传完成后返回上传页面。