好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Spring MVC实现文件上传和下载

本文实例为大家分享了spring mvc实现文件上传和下载的具体代码,供大家参考,具体内容如下

文件上传

1、导入主要依赖

?

1

2

3

4

5

6

7

8

9

10

11

12

<!--文件上传-->

<dependency>

  <groupid>commons-fileupload</groupid>

  <artifactid>commons-fileupload</artifactid>

  <version> 1.3 . 3 </version>

</dependency>

<!--servlet-api导入高版本的-->

<dependency>

  <groupid>javax.servlet</groupid>

  <artifactid>javax.servlet-api</artifactid>

  <version> 4.0 . 1 </version>

</dependency>

2、配置bean:multipartresolver(注:此bena的id必须为:multipartresolver , 否则上传文件会报400的错误!)

?

1

2

3

4

5

6

7

8

9

<!--文件上传配置-->

<bean id= "multipartresolver" class = "org.springframework.web.multipart测试数据mons测试数据monsmultipartresolver" >

  <!-- 请求的编码格式,必须和jsp的pageencoding属性一致,以便正确读取表单的内容,

  默认为iso- 8859 - 1 -->

  <property name= "defaultencoding" value= "utf-8" />

  <!-- 上传文件大小上限,单位为字节( 10485760 =10m) -->

  <property name= "maxuploadsize" value= "10485760" />

  <property name= "maxinmemorysize" value= "40960" />

</bean>

3、index.jsp

4、controller

?

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

41

42

43

44

45

46

47

48

49

50

51

52

53

@restcontroller

public class filecontroller {

     //@requestparam("file") 将name=file控件得到的文件封装成 commonsmultipartfile 对象

 

     //批量上传 commonsmultipartfile 则为数组即可

     @requestmapping ( "/upload" )

     public string fileupload( @requestparam ( "file" ) commonsmultipartfile file, httpservletrequest request) throws ioexception {

         //获取文件名 : file.getoriginalfilename();

         string uploadfilename = file.getoriginalfilename();

         //如果文件名为空,直接回到首页!

         if ( "" .equals(uploadfilename)) {

             return "redirect:/index.jsp" ;

         }

         system.out.println( "上传文件名 : " + uploadfilename);

         //上传路径保存设置

         string path = request.getservletcontext().getrealpath( "/upload" );

         //如果路径不存在,创建一个

         file realpath = new file(path);

         if (!realpath.exists()) {

             realpath.mkdir();

         }

         system.out.println( "上传文件保存地址:" + realpath);

         inputstream is = file.getinputstream(); //文件输入流

         outputstream os = new fileoutputstream( new file(realpath, uploadfilename)); //文件输出流

         //读取写出

         int len = 0 ;

         byte [] buffer = new byte [ 1024 ];

         while ((len = is.read(buffer)) != - 1 ) {

             os.write(buffer, 0 , len);

             os.flush();

         }

         os.close();

         is.close();

         return "redirect:/index.jsp" ;

     }

 

     /*

      * 采用file.transto 来保存上传的文件

      */

     @requestmapping ( "/upload2" )

     public string fileupload2( @requestparam ( "file" ) commonsmultipartfile file, httpservletrequest request) throws ioexception {

         //上传路径保存设置

         string path = request.getservletcontext().getrealpath( "/upload" );

         file realpath = new file(path);

         if (!realpath.exists()) {

             realpath.mkdir();

         }

         system.out.println( "上传文件保存地址:" + realpath);

         //通过commonsmultipartfile的方法直接写文件(注意这个时候)

         file.transferto( new file(realpath + "/" + file.getoriginalfilename()));

         return "redirect:/index.jsp" ;

     }

}

文件下载

index.jsp

controller

?

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

@requestmapping (value = "/download" )

public string downloads(httpservletresponse response, httpservletrequest request) throws exception {

     //要下载的图片地址

     string path = request.getservletcontext().getrealpath( "/upload" );

     string filename = "基础语法.jpg" ;

 

     //1、设置response 响应头

     response.reset(); //设置页面不缓存,清空buffer

     response.setcharacterencoding( "utf-8" ); //字符编码

     response.setcontenttype( "multipart/form-data" ); //二进制传输数据

     //设置响应头

     response.setheader( "content-disposition" , "attachment;filename=" + urlencoder.encode(filename, "utf-8" ));

     file file = new file(path, filename);

     //2、 读取文件--输入流

     inputstream input = new fileinputstream(file);

     //3、 写出文件--输出流

     outputstream out = response.getoutputstream();

     byte [] buff = new byte [ 1024 ];

     int index = 0 ;

     //4、执行 写出操作

     while ((index = input.read(buff)) != - 1 ) {

         out.write(buff, 0 , index);

         out.flush();

     }

     out.close();

     input.close();

     return null ;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/m0_46360532/article/details/115584248

查看更多关于Spring MVC实现文件上传和下载的详细内容...

  阅读:18次