本文共 3886 字,大约阅读时间需要 12 分钟。
1.上一篇博客我们讲解了普遍情况下都适用的文件上传的功能代码,那么本篇博客将会重点讲解SSH框架之SpringMVC的文件上传代码;
2.SpringMVC框架本身就已经封装了特有的文件获取和解析的方法,所以,我们之需要将这些方法熟练运用展示出即可; 3.本篇实例将会分成四个步骤,给您展示一步到位的完善的springmvc文件上传: (1).需要的jar包; (2).jsp页面; (3).xml配置; (4).后台controller处理方法;1.需要提供的jar包:
2.jsp页面:3.xml文件配置:
4.后台controller处理方法类:
/** * springMVC文件上传方法实例 * @author hqc * */@Controller@RequestMapping(value = "${adminPath}/upload")public class Uploadfile(){ /** * 单文件上传: * 用@RequestParam注解来指定表单上的file为MultipartFile * 参数都会实行自动装配~ * @param multipartfile * @return * @throws IOException */ @RequestMapping(value = "/uploadId") @ResponseBody public String idIdentification(@RequestParam("idPic") MultipartFile multipartfile) throws IOException { //测试获取到的文件信息 System.out.println("getOriginalFilename:"+multipartfile.getOriginalFilename()); System.out.println("getName:"+multipartfile.getName()); // 设置返回的文件格式,图片 //HttpHeaders headers = new HttpHeaders(); //headers.setContentType(MediaType.IMAGE_JPEG); //获取项目保存文件的根目录 String savePath = request.getSession().getServletContext().getRealPath("/uploadFile/placeImage"); //根据原文件名使用时间戳和随机数重命名,保存 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss"); String fileName = imageFile.getOriginalFilename(); String lastThreeLetter = fileName.substring(fileName.lastIndexOf(".")); String sqlName = sdf.format(new Date())+(int)(Math.random()*10000)+lastThreeLetter; //根据根目录和文件名,创建新的文件路径 File saveFile = new File(savePath+File.separator+sqlName); //将获取到的前台的文件流转换到新的文件上面 //springmvc已经封装了输入和输出流方法,无需再写输入输出流 multipartfile.transferTo(saveFile); //返回json String json = "{\"result\":\""+result+"\"}"; return json; //返回页面显示用户上传的图片 //return new ResponseEntity(FileUtils.readFileToByteArray(saveFile), headers, HttpStatus.OK); } /** * 多文件上传: * 前台可上传多个文件,使用MultipartFile的数组形式接收 * @param multipartfiles * @return * @throws IllegalStateException * @throws IOException */ @RequestMapping(value = "/multiUploadId") public String multiUpload(@RequestParam("idPic") MultipartFile[] multipartfiles) throws IllegalStateException, IOException { //获取项目保存文件的根目录 String savePath = request.getSession().getServletContext().getRealPath("/uploadFile/placeImage"); //格式化时间戳 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss"); String timePath = sdf.format(new Date()); if(null != multipartfiles && multipartfiles.length > 0){ //遍历并保存文件 for(MultipartFile file : multipartfiles){ //1. 使用原文件名作为保存的路径 //file.transferTo(new File(savePath + file.getOriginalFilename())); //2. 针对每个文件创建不同的时间戳+随机数名称 String fileName = file.getOriginalFilename(); String lastThreeLetter = fileName.substring(fileName.lastIndexOf(".")); String sqlName = timePath+(int)(Math.random()*10000)+lastThreeLetter; //根据根目录和文件名,创建新的文件路径 File saveFile = new File(savePath+File.separator+sqlName); //将获取到的每个文件流分别转换到新的文件上面 //springmvc已经封装了输入和输出流方法,无需再写输入输出流 multipartfile.transferTo(saveFile); } } return "redirect:uploadPage"; } }
1.以上就是springMVC上传文件的全部流程,代码也是简洁方便,对于还不是很了解springmvc上传文件的程序猿还是有帮助的,有需要的可以自行复制代码,然后可以经过自己的进一步加工,形成对自己最有效的一套代码;
2.实践是检验认识真理的唯一标准,代码好不好用,何不亲自动手实践看看;