zoukankan      html  css  js  c++  java
  • springmvc文件的上传与下载

    1:先在springmvc.xml配置文件中加上MultipartResolver接口的实现类CommonsMultipartResolver的bean

    1 <!-- 配置文件上传的MultipartResolver接口 -->
    2     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    3         <property name="defaultEncoding" value="UTF-8"/>
    4         <property name="maxUploadSize" value="1024000"/>
    5     </bean>

    2:在Handler中写代码

      1):利用file.transferTo()的方式进行上传。

     1 @RequestMapping("/testFileUpload")
     2     public String testFileUpload(@RequestParam("desc") String desc,@RequestParam("file") MultipartFile file) throws IOException{
     3         System.out.println("desc :"+ desc);
     4         System.out.println("file :"+ file.getOriginalFilename());
     5         System.out.println("InputStream :"+file.getInputStream());
     6         //得到文件上传的路径,就是文件上传到哪个地方
     7         String path="E:/springupload/" +file.getOriginalFilename();
     8         System.out.println(path);
     9         //上传
    10         file.transferTo(new File(path));
    11         return "success";
    12     }

    利用@RequestParam把页面上的值赋值给参数desc和file。然后利用file的getOriginalFilename()方法得到上传文件的名字。 利用file的transferTo()方法上传文件

      2):利用流的方式上传

     1 @RequestMapping("/testFileUpload")
     2     public String testFileUpload(@RequestParam("desc") String desc,@RequestParam("file") MultipartFile file) throws IOException{
     3         System.out.println("desc :"+ desc);
     4         System.out.println("file :"+ file.getOriginalFilename());
     5         System.out.println("InputStream :"+file.getInputStream());
     6         
     7         //上传
     8         //获取输出流。把要上传的文件路径和文件名放到输出流中
     9         OutputStream os=new FileOutputStream("E:/springupload/"+file.getOriginalFilename());
    10         InputStream is=file.getInputStream();
    11         int temp;
    12         //is.read()读取上传的文件。=(-1):读到最后一个,然后写入到输出流中
    13         while((temp=is.read())!=(-1)){
    14             os.write(temp);
    15         }
    16         os.flush();
    17         os.close();
    18         is.close();
    19         
    20         return "success";
    21     }

    3:文件的下载

    @RequestMapping("/testDownload")
        public ResponseEntity<byte[] > testDownload(HttpSession session) throws IOException{
            //得到文件的路径
            ServletContext servletContext=session.getServletContext();
            InputStream in=servletContext.getResourceAsStream("/WEB-INF/files/abc.txt");
            System.out.println(in);
            //创建一个与abc.txt文件一样大的byte[]数组。
            byte[] body=new byte[in.available()];
            in.read(body);
            HttpHeaders headers = new HttpHeaders();
            headers.add("Content-Disposition", "attachment;filename=abc.txt");
            HttpStatus statusCode = HttpStatus.OK;
            /*使用 HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入 •
            参中或将响应结果转为对应类型的响应信息,Spring 提供了两种途径:
            使用 @RequestBody / @ResponseBody – 对处理方法进行标注
            使用 HttpEntity<T> / ResponseEntity<T> 作为处理方法的入参或返回– 值*/
            ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
            return response;
        }
  • 相关阅读:
    《剑指offer》第五十五题(平衡二叉树)
    《剑指offer》第五十五题(二叉树的深度)
    《剑指offer》第五十四题(二叉搜索树的第k个结点)
    《剑指offer》第五十三题(数组中数值和下标相等的元素)
    《剑指offer》第五十三题(0到n-1中缺失的数字)
    《剑指offer》第五十三题(数字在排序数组中出现的次数)
    《剑指offer》第五十二题(两个链表的第一个公共结点)
    《剑指offer》第五十一题(数组中的逆序对)
    http://www.cnblogs.com/amylis_chen/archive/2010/07/15/1778217.html
    在做百度地图开发
  • 原文地址:https://www.cnblogs.com/bulrush/p/8068252.html
Copyright © 2011-2022 走看看