SpringMVC04-文件上传

1、文件下载和上传

1.文件下载
0.项目见springmvc04
1.访问资源时响应头如果没有设置Content-Disposition,浏览器默认按照inline值进行处理
1.1inline:能显示就显示,不能显示就下载
2.实现下载:只需要修改响应头Content-Disposition =”attachment;filename=“文件名”
2.1 attachment 下载,以附件的形式下载
2.2filename=“值” 就是下载时显示的下载文件名
3.实现步骤:
3.1导入Apache的两个jar

3.2在springmvc.xml文件中对所要下载的静态资源进行放行
3.3在jsp页面中编写下载的连接

<a href="download?fileName=test.rar">下载</a>

3.4编写控制器方法

  @RequestMapping("download")
  public void download(String fileName,HttpServletRequest req,HttpServletResponse res) throws Exception {               
	 res.setHeader("Content-Disposition", "attachment;filename=test.rar");
	 ServletOutputStream os=res.getOutputStream();
	 String path=req.getServletContext().getRealPath("files");
	 System.out.println(path);
	 File file=new File(path, fileName);
	 byte[] bytes = FileUtils.readFileToByteArray(file);
	 os.write(bytes);
	 os.flush();
	 os.close();
  }

2文件上传
0. 项目文件springmvc05

  1. 这个文件上传是基于Apache的,要使用到Apache的一个jar包(主要是Commons-fileupload-1.3.3.jar)

  2. MultipartResovler作用:
    2.1把客户端上传的文件流,转换成MultipartFile封装类
    2.2通过MultipartFile封装类获取到文件流
    3.表单数据类型分类
    3.1在中其enctype属性控制表单的类型,其

<form action="" enctype="application/x-www-form-urlencoded"></form>

3.2默认值为"application/x-www-form-urlencoded" 普通表单数据(少量文字信息)
3.3text/plain:大量文字时使用的类型,如邮件、论文
3.4multipart/form-data:表单中包含二进制文件内容
4.实现步骤:
4.1导入jar包,包括springmvc的jar包和Apache文件上传的包
在这里插入图片描述
4.2编写表单:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="upload" enctype="multipart/form-data" method="post">
 姓名<input type="text" name="name"/>
 文件<input type="file" name="file"/>
 <input type="submit" value="提交"/>
</form>
</body>
</html>

4.3编写配置文件

<!-- 使用注解第一步,扫描注解<context:component-scan base-package="有注解的包"></context:component-scan> -->     
<context:component-scan base-package="com.mywolf.controller"></context:component-scan>
<!-- 配置springMVC的注解驱动 -->
   <!-- 包含了handlermapping(org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping)handleradapter(org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter)    -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 下一步写个控制器试一下 -->

<!-- 补充:对于图片,js等静态资源的请求 ,让其向指定的文件夹去寻找,例如在浏览器输入images/my.jpg时,查看其效果-->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
<mvc:resources location="/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/files/" mapping="/files/**"></mvc:resources>
<!-- 文件上传 -->
<!-- 配置multipart解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 <property name="maxUploadSize" value="500"></property><!-- 设置上传文件的大小不超过多少 -->
</bean>
<!-- 异常解析器 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
 <props>
 <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">/erro.jsp</prop><!-- 当文件过大产生异常,产生异常后向error.jsp跳转 -->
 </props>
</property>
</bean>
</beans>

注意:划红线的必须为那个名字,不能省略,不能更改
4.4编写控制器

  @RequestMapping("upload")
  public String upload(MultipartFile file,String name) throws IOException {
	  System.out.println("name"+name);
	  String fileName=file.getOriginalFilename();
	  String suffix=fileName.substring(fileName.lastIndexOf("."));
	  String uuid = UUID.randomUUID().toString();
	  FileUtils.copyInputStreamToFile(file.getInputStream(), new File("D:/"+uuid+suffix));
	  return "/index.jsp";
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值