目录
1、前言
本文是一个简单的文件下载案例,讲重点,知识点整理,希望能够帮助你们
2、实现效果
3、实现核心原理
3.1 导入相关文件下载依赖
<!-- 实现文件上传功能的jar-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
如果是跨服务器,则:
<!-- 跨文件上传要用到的包-->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
3.2 springmvc.xml文件
<!-- 配置文件解析器:默认字节: 10=10M*1024*1024*1024 id名称一定叫multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- --> <property name="maxUploadSize" value="10485760"></property> </bean>
核心完整文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--开启注解扫描包-->
<context:component-scan base-package="com.obtk.controller"></context:component-scan>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 注册自定义类型转换器-->
<!-- <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionService">
<property name="converters">
<set>
<bean class="com.obtk.util.StringToDate"></bean>
</set>
</property>
</bean>-->
<!--
配置文件解析器:默认字节: 10=10M*1024*1024*1024
id名称一定叫multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- -->
<property name="maxUploadSize" value="10485760"></property>
</bean>
<!-- 处理静态资源文件:js/css-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<!--开启springmvc注解支持-->
<!-- <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 开启让前端控制拦截的东西:-->
<!-- <mvc:resources mapping="/js/" location="js/**"></mvc:resources>-->
<!-- 告诉前端控制器,所有的静态资源都不要拦截-->
</beans>
3.3 核心代码Controller
// 实现文件下载
@RequestMapping(value="/downloadFile")
public String downloads(HttpServletResponse response) throws Exception{
String path = "E:/";
String fileName = "myimg.png";
//1、设置response 响应头
response.reset();
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 "success";
}
注意:原来E盘根目录下有myimg.png这个文件图片
4、jsp文件
<a href="${pageContext.request.contextPath}/file/downloadFile">点击文件下载</a><br><br>
5、知识点补充
5.1 实现文件上传满足的要求:
1:method 是post
2:添加属性:
enctype="multipart/form-data"
3:类型要为:
type="file"
5.2 文件上传核心代码
/*
* springmvc文件上传
*
* */
@RequestMapping("uploadTwo")
public String fileuploadTwo(HttpServletRequest request, MultipartFile uploadmvc) throws Exception {
System.out.println("文件上传");
// 使用fileupload组件完成文件上传
// 上传的位置
ServletContext servletContext = request.getSession().getServletContext();
String realPath = servletContext.getRealPath("/upload");
// 判断路径是否存在
File file = new File(realPath);
if (!file.exists()) {
file.mkdir();//创建文件夹
}
// 获取上传文件的名称
String filename = uploadmvc.getOriginalFilename();
// 把文件的名称设置唯一值
String s = UUID.randomUUID().toString().replaceAll("-", "");
String name = s + "-" + filename;
// 完成文件上传
uploadmvc.transferTo(new File(realPath,name));
return "success";
}
6、结束
以上是关于SpringMVC文件下载上传的基础代码实现,比较简单,希望对你们学习文件下载有帮助,同时非常欢迎大家在评论区留言交流更多的知识