一、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;
}
|
相关推荐
使用MultipartFile接口处理文件上传,SpringMVC提供方便的API来实现文件上传下载功能。 7. **异常处理**: 可以通过@ControllerAdvice和@ExceptionHandler全局处理异常,提供统一的错误页面。 8. **RESTful API...
- SpringMVC提供了MultipartFile接口处理文件上传,需要配置CommonsMultipartResolver解析器。 - 文件上传时,Controller方法需要接收MultipartFile类型的参数,并能处理上传错误和文件大小限制。 10. **异常处理...
SpringMVC框架提供了强大的功能来支持开发者更方便地处理HTTP请求,包括请求参数的绑定、数据校验、文件上传、异常处理等高级特性。熟练掌握SpringMVC的知识对于开发高质量的Web应用是必不可少的。
在这个"springMVC笔记以及实例"的压缩包中,可能包含了关于SpringMVC的详细讲解、代码示例,特别是关于文件上传和跨服务器文件传输的部分。 1. **SpringMVC基础**:SpringMVC通过DispatcherServlet作为前端控制器...
- 使用`MultipartFile`处理文件上传,`HttpServletResponse`进行文件下载。 8. **RESTful风格**: - SpringMVC支持构建RESTful API,通过HTTP动词和URI资源定位。 9. **Ajax**: - 通过jQuery或其他库与...
总结来说,SpringMVC提供了丰富的工具和API,使得文件上传和下载变得简单而直观。通过合理配置和恰当的代码实现,我们可以构建安全、高效的文件管理系统。在实践中,开发者需要结合业务需求,灵活运用这些技术,以...
- 文件上传与下载功能,支持大文件和断点续传。 - 异常处理机制,可自定义全局和局部异常处理器。 - 自定义拦截器,实现预处理、后处理和链式拦截。 通过深入学习和实践 SpringMVC,开发者可以构建高效、可维护...
在实际开发中,Spring MVC 可以与各种视图技术(如 JSP、Thymeleaf、Velocity 等)配合,实现复杂的应用场景,如表单处理、数据验证、文件上传下载等。此外,Spring MVC 还支持 RESTful 风格的 API 设计,可以方便...
3. **上传下载文件**:如何处理HTTP请求中的文件上传和下载,包括使用MultipartFile接口。 4. **拦截器(Interceptor)**:学习如何编写和注册自定义拦截器,实现请求预处理和后处理功能,如日志记录、权限检查等。...
通过`MultipartFile`类处理文件上传。 ##### 6.4 JSON数据交互 利用`@RequestBody`和`@ResponseBody`注解进行JSON数据的读写。 ##### 6.5 RESTful支持 使用`@GetMapping`、`@PostMapping`等注解实现RESTful风格...
3. **文件上传** - 支持通过HTTP请求上传文件。 - 使用MultipartFile类型来接收上传的文件。 4. **JSON数据交互** - 使用Jackson或Gson等库来实现JSON数据的序列化和反序列化。 5. **RESTful支持** - 提供一套...
- **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **RESTful支持**:支持RESTful风格的URL。 - **拦截器**:提供了一种机制可以在请求被处理之前或之后做一些预处理或后...
除了基本的功能外,SpringMVC还提供了一系列高级功能,如参数绑定、数据回显、文件上传、JSON数据交互等。 ##### 6.1 参数绑定 - **简单类型绑定**:直接将请求参数与控制器方法参数绑定。 - **POJO类型绑定**:...
8. **文件上传**:在“springMvc-170-004-fileupload”这个文件中,可能涉及了SpringMVC处理文件上传的功能。使用`MultipartFile`接口可以从请求中获取上传的文件,然后可以存储到服务器或者进行其他处理。 9. **...
SpringMVC 还提供了异常处理、国际化、上传下载等功能,极大地提高了开发效率和代码的可维护性。 总的来说,SpringMVC 作为 Spring 生态系统的一部分,为 Java Web 开发提供了强大的工具和灵活性,使得开发者能够更...
https://pan.baidu.com/s/1j1cUTFkiFsBJEZAjB6AFvg,文件太大上传不了,所以放入百度网盘链接,压缩文件里面是提取码,这个为全部资料
8、拦截器+文件上传下载 能学到什么:详细了解SpringMVC基础以及使用 阅读建议: 建议配合狂神教学视频使用:...
springMVC入门笔记,包括环境搭建、传递参数、从控制器获取参数、文件的上传、验证、异常的处理。