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

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笔记.doc

    SpringMVC笔记内容:第...第二天(跳转方式(forward、redirect)、@ResponseBody、SpringMVC作用域传值的方式、文件上传、文件下载、跨服务器上传);第三天(SpringMVC异常处理、自定义拦截器、拦截器栈) --author:

    springMVC笔记以及实例

    springMVC笔记以及实例,视频为黑马程序员教学视频,记录了所有的笔记以及例题,包括文件上传以及文件跨服务器上传

    springmvc教程

    springmvc详细笔记,文件上传,rest与spring集成

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

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

    springMVC 笔记

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

    JSP基于SSM云笔记资料文件共享网页设计源码+数据库.zip

    笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...

    JSP基于SSM云笔记资料文件共享网设计可升级SpringBoot

    笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...

    JSP基于SSM云笔记资料文件共享网设计+源代码+文档说明+数据库.zip

    笔记: 笔记id,笔记类型,摘要标题,笔记图片,笔记内容描述,笔记文件,是否回收站,上传用户,上传时间 笔记收藏: 收藏id,被收藏笔记,收藏用户,收藏时间 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复...

    SpringMVC框架第二天【随堂笔记】.pdf

    springMVC传递模型数据、文件上传、异常处理、拦截器的实战代码,简单的示例,适合初学者。代码详细,可以直接复制使用。

    spring5mvc第二天【大纲笔记】.zip

    springmvc基础学习,包括响应数据和结果视图、 SpringMVC 实现文件上传、 SpringMVC 中的异常处理、 SpringMVC 中的拦截器

    javaee笔记

    EL表达式、Filter)、mysql、jdbc、文件上传与下载、Ajax、jQuery、struts2、struts2高级、spring、hibernate、shiro、springmvc、mybatis、webservice、maven、svn、activiti、lucene、linuxPPT

    springboot学习思维笔记.xmind

    文件上传配置 自定义HttpMessageConverter MappingJackson2HttpMessageConverter StringHttpMessageConverter 服务器端推送技术 SSE Servlet3.0+异步方法处理 Spring MVC的测试 ...

    基于ssm框架,java语言做的在线笔记网站+源代码+文档说明

    # personal-blog 个人博客 springmvc + spring +mybaits 的框架 欢迎大家一起合作来完成这个博客系统 -------- ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    SpringMvcHelloWorld.zip

    2019-06-21SpringMVC学习笔记中的源代码,主要用于交流学习,实现包括文件上传等大部分基础功能,程序亲测全部实现

    项目源码(java项目淘淘商城)

    Spring+SpringMVC+MyBatis,用到了maven,...这个是淘宝上买的java项目总大小10.22G(包含视频、源码、笔记、sql脚本),这里上传了源码(不到200M),同时附上视频及其他文件云盘链接,亲测可用,受益匪浅,欢迎下载!

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 06.FastDFS安装步骤-文件上传.avi │ 07.配置nginx插件访问图片.avi │ 08.测试图片上传.avi │ 09.FastDFS工具类的使用.avi │ 10.图片上传过程分析.avi │ 11.图片上传Service.avi │ 12.图片上传完成.avi │ ...

    基于SSM宠物医院专家预约宠物交流系统+源代码+文档说明+数据库.zip

    JSP基于SSM宠物医院专家预约宠物交流系统可升级SpringBoot毕业源码案例设计 ...开发环境:myEclipse,Eclipse或Idea + mysql数据库 ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    互联网创意产品众筹平台

    不多说,懂得人看名字就能知道,挺好的一套案例,包含讲解视频和完整案例。 内容: 『课程目录』: ├─众筹项目-第01天...广告模块-文件上传分析5 Q+ T5 k V+ @! Z7 t │ 5.广告模块-文件上传功能实现 │ ...

Global site tag (gtag.js) - Google Analytics