SpringMVC实现文件下载功能

目录

1、前言

2、实现效果 

3、实现核心原理

4、jsp文件

5、知识点补充

6、结束


 

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文件下载上传的基础代码实现,比较简单,希望对你们学习文件下载有帮助,同时非常欢迎大家在评论区留言交流更多的知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值