本文实例为大家分享了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.commons.commonsmultipartresolver" > <!-- 请求的编码格式,必须和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