1.在applicationContext.xml里面配置以下xml

 <!--文件上传配置文件-->
    <bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
        <!--请求的编码格式必须和jsp页面的pageEncoding一致-->
        <property name="defaultEncoding" value="utf-8"></property>
        <!--上传最大最小限制-->
        <property name="maxUploadSize" value="2982887"/>
    </bean>

  

然后

 

单文件上传

@RequestMapping("/upload1") //单文件上传
        public String upload1(String ms, MultipartFile mufile,Model model) throws IOException {
            System.out.println("=========================");
            //mufile.getOriginalFilename()文件名字---------D:\jq\是要保存的目录
            String path="D:\\jq\\"+mufile.getOriginalFilename();
            File file=new File(path);
            mufile.transferTo(file);
            System.out.println(mufile.getOriginalFilename()+"-----------------------");
            model.addAttribute("mufile",mufile.getOriginalFilename());
           // model.addAttribute("mufile","/springmvc_file_war_exploded/img/1001704.jpg");
            return "app";
        }

  

多文件上传

@RequestMapping("/upload1")     //多文件上传
    public String upload1(String ms, MultipartFile[] mufile) throws IOException {
        for (MultipartFile multipartFile : mufile) {
            //mufile.getOriginalFilename()文件名字D:\jq\是要保存的目录
            String path="D:\\jq\\"+multipartFile.getOriginalFilename();
            File file=new File(path);
            multipartFile.transferTo(file);
        }
        return null;
    }

  

 

第一种文件下载

//文件下载
        @RequestMapping("/dowinload")
        public String dowinload(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //获取当前目录下的文件路径(真实开发时数据库里面读取)
            String realPath=request.getServletContext().getRealPath("/up/324466.jpg");
            //根据文件路径封装成FiLe
            File tempFile=new File(realPath);
            //根据File对象获得文件名
            String fileName=tempFile.getName();
            //设置响应头content-disposition--就是设置文件的打开方式,默认网页打开
            //attachment:filename--为了以下载方式打开文件
            //utf-8文件有中文就不会乱码
            response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(fileName,"UTF-8"));
            //根据文件路径封装为文件输入流
            InputStream in=new FileInputStream(realPath);
            int len=0;
            //声明一个1kb的缓冲区
            byte[]buffer=new byte[1024];
            //获取输出流
            OutputStream out=response.getOutputStream();
            //循环读取文件一次1kb,避免内存溢出
            while ((len=in.read(buffer))>0){
                //往客户端写入
                out.write(buffer,0,len);//将缓冲区的数据输出到客户端
            }
            in.close();
        return null;
        }

  

 

第2种

//文件下载
    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(HttpServletResponse response,HttpServletRequest request,
                                           @RequestParam("file") String file1) throws IOException {
        String path=file1;//要下载的文件路径
        File file=new File(path);
        HttpHeaders headers = new HttpHeaders();
        System.out.println(file.getCanonicalPath()+"---------------------------------");

        //你好.xls是后缀文件名--指定了只可以上传xls表格
        String fileName=new String("你好.jar".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
        headers.setContentDispositionFormData("attachment", fileName);
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
                headers, HttpStatus.CREATED);
    }