`
qingyu11068
  • 浏览: 67767 次
文章分类
社区版块
存档分类
最新评论

SpringMVC笔记(五)文件的上传下载

阅读更多

一、SpringMVC实现文件的上传

Spring MVC 上下文中默认没有为文件上传提供了直接的支持,因 此默认情况下不能处理文件的上传工作,

如果想使用 Spring 的文件上传功能,需现在上下文中配置 CommonsMultipartResovler:

二、文件上传的步骤:
    1.加入jar包:
        commons-fileupload-1.3.1.jar
        commons-io-2.4.jar

   2.在SpringMVC配置文件中配置CommonsMultipartResovler

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

   3.前端表单:注意:需要请求方式:POST,input类型:file,(官网:www.fhadmin.org)属性:enctype="multipart/form-data"

1
2
3
4
5
<form action="${pageContext.request.contextPath }/testUpload" method="post" enctype="multipart/form-data">
    file:<input type="file" name="photo">
    desc:<input type="text" name="desc">
    <input type="submit" value="上传">
 </form>

    4.文件上传方法的实现

    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@RequestMapping("/testUpload")
public String testUpload(HttpServletRequest request,@RequestParam(value="desc",required=false)String desc,@RequestParam("photo") CommonsMultipartFile file){
    ServletContext servletContext = request.getServletContext();
    String realPath = servletContext.getRealPath("/upload");
    File file1 = new File(realPath);
    if(!file1.exists()){
        file1.mkdir();
    }
    OutputStream out = null;
    InputStream in = null;
    //uuid_name.jpg
    String prefix = UUID.randomUUID().toString();
    prefix = prefix.replace("-","");
    String fileName = prefix+"_"+file.getOriginalFilename();
    System.out.println(fileName);
    try {
        out = new FileOutputStream(new File(realPath+"\\"+fileName));
        in = file.getInputStream();
        //创建一个缓冲区(官网:www.fhadmin.org)
        byte buffer[]=new byte[1024];
        //判断输入流中的数据是否已经对完
        int len=0;
        //循环将输入流读入到缓冲区中(len=in.read(buffer)>0)表示in里面还有数据
        while((len=in.read(buffer))!=-1){
            //使用FileOutPutStream输出流,将缓冲区的数据输出到指定目录文件
            out.write(buffer,0,len);   
        }
    catch (Exception   e) {
        e.printStackTrace();
    }
    //关闭输入流、输出流(官网:www.fhadmin.org)
    try {
        out.close();
        in.close();
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return  "success";
}

 三、文件的下载

        文件能上传就能下载

      1.用ResponseEntity<byte[]> 返回值完成文件下载:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RequestMapping(value="/testDownLoad")
    public ResponseEntity<byte[]> testDonwLoad(HttpServletRequest request) throws Exception{
        ServletContext servletContext=request.getServletContext();
        String fileName="风吹麦浪.mp3";
        String realPath = servletContext.getRealPath("/WEB-INF/"+fileName);
        InputStream in=new FileInputStream(new File(realPath));
        byte [] body=new byte[in.available()];
        in.read(body);
        MultiValueMap<String, String> headers=new HttpHeaders();
        fileName=new String(fileName.getBytes("gbk"),"iso8859-1");
        headers.set("Content-Disposition""attachment;filename="+fileName);
        HttpStatus status=HttpStatus.OK;
        ResponseEntity<byte []> responseEntity=new ResponseEntity<>(body, headers,status);
        in.close();
        return responseEntity; 
    }

 

分享到:
评论

相关推荐

    狂神说springmvc笔记.zip

    使用MultipartFile接口处理文件上传,SpringMVC提供方便的API来实现文件上传下载功能。 7. **异常处理**: 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提供统一的错误页面。 8. **RESTful API...

    尚硅谷SpringMVC部分全套教学文档笔记

    - SpringMVC提供了MultipartFile接口处理文件上传,需要配置CommonsMultipartResolver解析器。 - 文件上传时,Controller方法需要接收MultipartFile类型的参数,并能处理上传错误和文件大小限制。 10. **异常处理...

    springMVC笔记

    SpringMVC框架提供了强大的功能来支持开发者更方便地处理HTTP请求,包括请求参数的绑定、数据校验、文件上传、异常处理等高级特性。熟练掌握SpringMVC的知识对于开发高质量的Web应用是必不可少的。

    springMVC笔记以及实例

    在这个"springMVC笔记以及实例"的压缩包中,可能包含了关于SpringMVC的详细讲解、代码示例,特别是关于文件上传和跨服务器文件传输的部分。 1. **SpringMVC基础**:SpringMVC通过DispatcherServlet作为前端控制器...

    SpringMVC笔记.zip

    - 使用`MultipartFile`处理文件上传,`HttpServletResponse`进行文件下载。 8. **RESTful风格**: - SpringMVC支持构建RESTful API,通过HTTP动词和URI资源定位。 9. **Ajax**: - 通过jQuery或其他库与...

    SSM笔记-SpringMVC的上传和下载

    总结来说,SpringMVC提供了丰富的工具和API,使得文件上传和下载变得简单而直观。通过合理配置和恰当的代码实现,我们可以构建安全、高效的文件管理系统。在实践中,开发者需要结合业务需求,灵活运用这些技术,以...

    吴天雄--SpringMVC笔记.doc

    - 文件上传与下载功能,支持大文件和断点续传。 - 异常处理机制,可自定义全局和局部异常处理器。 - 自定义拦截器,实现预处理、后处理和链式拦截。 通过深入学习和实践 SpringMVC,开发者可以构建高效、可维护...

    springMVC相关笔记

    在实际开发中,Spring MVC 可以与各种视图技术(如 JSP、Thymeleaf、Velocity 等)配合,实现复杂的应用场景,如表单处理、数据验证、文件上传下载等。此外,Spring MVC 还支持 RESTful 风格的 API 设计,可以方便...

    springmvc课堂笔记(两天)

    3. **上传下载文件**:如何处理HTTP请求中的文件上传和下载,包括使用MultipartFile接口。 4. **拦截器(Interceptor)**:学习如何编写和注册自定义拦截器,实现请求预处理和后处理功能,如日志记录、权限检查等。...

    SpringMVC学习课堂笔记

    通过`MultipartFile`类处理文件上传。 ##### 6.4 JSON数据交互 利用`@RequestBody`和`@ResponseBody`注解进行JSON数据的读写。 ##### 6.5 RESTful支持 使用`@GetMapping`、`@PostMapping`等注解实现RESTful风格...

    SpringMVC课堂笔记(1)

    3. **文件上传** - 支持通过HTTP请求上传文件。 - 使用MultipartFile类型来接收上传的文件。 4. **JSON数据交互** - 使用Jackson或Gson等库来实现JSON数据的序列化和反序列化。 5. **RESTful支持** - 提供一套...

    springmvc第一天课堂笔记.docx

    - **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **RESTful支持**:支持RESTful风格的URL。 - **拦截器**:提供了一种机制可以在请求被处理之前或之后做一些预处理或后...

    springmvc课堂笔记

    除了基本的功能外,SpringMVC还提供了一系列高级功能,如参数绑定、数据回显、文件上传、JSON数据交互等。 ##### 6.1 参数绑定 - **简单类型绑定**:直接将请求参数与控制器方法参数绑定。 - **POJO类型绑定**:...

    SpringMVC笔记

    8. **文件上传**:在“springMvc-170-004-fileupload”这个文件中,可能涉及了SpringMVC处理文件上传的功能。使用`MultipartFile`接口可以从请求中获取上传的文件,然后可以存储到服务器或者进行其他处理。 9. **...

    SpringMVC笔记以及面试题.docx

    SpringMVC 还提供了异常处理、国际化、上传下载等功能,极大地提高了开发效率和代码的可维护性。 总的来说,SpringMVC 作为 Spring 生态系统的一部分,为 Java Web 开发提供了强大的工具和灵活性,使得开发者能够更...

    传智播客Mybatis_SpringMVC课程源码及笔记(所有资料)

    https://pan.baidu.com/s/1j1cUTFkiFsBJEZAjB6AFvg,文件太大上传不了,所以放入百度网盘链接,压缩文件里面是提取码,这个为全部资料

    狂神说Java-SpringMVC学习笔记

    8、拦截器+文件上传下载 能学到什么:详细了解SpringMVC基础以及使用 阅读建议: 建议配合狂神教学视频使用:...

    springMVC 笔记

    springMVC入门笔记,包括环境搭建、传递参数、从控制器获取参数、文件的上传、验证、异常的处理。

Global site tag (gtag.js) - Google Analytics