这是一篇个人用于记录所作案例的文章,也是一片比较简单易懂的关于 Spring MVC 上传 与 下载的文章,代码不多,注释也比较完善哈~~~
上代码:
前端的jsp文件的代码:
<form action="/upload" method="post" enctype="multipart/form-data"> 文件上传:<input type="file" name="file" id=""> <br> 文件上传:<input type="submit"value="上传"> <br> </form> <a href="download/aomei01.jpg">下载文件</a> <a href="download/a1.jpg">下载图片1</a> <a href="download?fileName=a1.jpg">下载图片2</a> <a href="download?fileName=aomei01.jpg">下载图片2</a>
这里就把上传与下载的代码,放在一起了,也是方便大家比较;
下面上后台的逻辑代码:
@RequestMapping("/upload") public String upload(MultipartFile file, HttpServletRequest request) throws IOException { //1获取上传文件的路径 String path = request.getServletContext().getRealPath("/upload/"); //2拿到上传文件名 String name = file.getOriginalFilename(); //3改名,把用户上传的文件进行改名操作 String nameNew = new Date().getTime() + new Random().nextInt(999999) + name; //4实例化File类的对象加载上传路径和文件 File f = new File(path + nameNew); //5 MultipartFile 里面的方法把路径的文件写入过去 file.transferTo(f); System.out.println("f = " + f); return "ok"; } 这是上传的代码,大致分为5个步骤,每一步都有相关的注释,这里就不多介绍,以便浪费大家的阅读积极性!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@RequestMapping("/download") public ResponseEntity<byte[]> dpwnload(@RequestParam("fileName") String fileName,HttpServletRequest request) throws IOException{ //1.下载的路径 String path = request.getServletContext().getRealPath("/download/"); //2.实例化File类对象加载下载的路径和文件 File f = new File(path+fileName); System.out.println("f = " + f); //3.转格式 String newName = new String(fileName.getBytes("utf-8"),"iso8859-1"); //4.转流 HttpHeaders hh = new HttpHeaders(); hh.setContentDispositionFormData("attachment", newName); hh.setContentType(MediaType.APPLICATION_OCTET_STREAM); //5.相应发送 return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(f),hh,HttpStatus.CREATED); }
最后是下载的相关逻辑代码:也是分为5步骤。