首页 > 代码库 > 文件下载
文件下载
pom.xml的maven:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.9.RELEASE</version> </dependency>
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>
web.xml配置:
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置DispatcherServlet的初始化參數:设置文件的路径和文件名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- classPath是字节码文件的根目录,这个目录 与java文件目录相对应, 这个目录只需要在java代码的根目录创建xml文件,编译之后再classes文件夹下会出现对应的xml文件, 这个根目录分两种情况 -->
<param-value>classPath:springmvc.xml</param-value>
</init-param>
<!--优先级,服务器启动便加载servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- /不包括jsp -->
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml配置:
<!-- 设置扫描组件的包: --> <context:component-scan base-package="com.qianfeng"/>
<!-- 配置映射解析器:如何将控制器返回的结果字符串,转换为一个物理的视图文件--> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀 ,指定jsp资源存放的位置 --> <property name="prefix" value="http://www.mamicode.com/WEB-INF/views/"/>
<!-- 后缀,所有jsp文件的结尾 --> <property name="suffix" value="http://www.mamicode.com/.jsp"/> </bean>
<!--声明当前的项目要用到文件上传的功能 --> <!-- id的值必须是 --> <!-- 配置文件上传解析器multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置编码,要与前端页面同意,一般情况下都是utf-8 --> <property name="defaultEncoding" value="http://www.mamicode.com/UTF-8"></property> <property name="maxUploadSize" value="http://www.mamicode.com/10240000"></property> <!-- 上传最大限制 --> </bean>
<!-- 以上标签表示文件上传功能开始启动 -->
java代码:
@RequestMapping("download")
public void load(HttpServletResponse resp,
HttpServletRequest req){
//核心思想,把服务器上的文件转成流输出到客户端
//需要response对象
//需要向客户端输出流的对象
//通过io操作获取服务器的文件
String path=req.getServletContext().getRealPath("/load/5.bmp");
File file=new File(path);
//设置contentype,告诉浏览器返回的数据格式(是文件还是图片) aplication/octet-stream是通用类型
resp.setContentType("aplication/octet-stream");
System.out.println(file.getName());
//响应也有请求体,请求头,请求行
//content-Disposition 表示向客户端描述附加信息
//attachment表示以附件的形式进行下载
resp.addHeader("content-Disposition","attachment;fileName="+file.getName());
try {
ServletOutputStream outputStream=resp.getOutputStream();
InputStream inputStream=new FileInputStream(file);
//转成byte数组
byte[] b=IOUtils.toByteArray(inputStream);
//以byte数组的形式进行输出
outputStream.write(b);
//流操作完须关闭
inputStream.close();
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
文件下载