zoukankan      html  css  js  c++  java
  • Spring MVC文件上传和下载

    Spring文件上传(单文件上传):

      

      首先导入依赖: 

      <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.1</version>
        </dependency>

      

      配置applicationContext.xml文件:

    <?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="cn.mvc"></context:component-scan>
        <!--Spring支持MVC注解-->
        <mvc:annotation-driven></mvc:annotation-driven>
        <!--试图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <mvc:default-servlet-handler/>
    
    
        <!--文件上传解析器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8"/>
            <property name="maxInMemorySize" value="5000000"/>
    
        </bean>
    
    
    </beans>

      创建FileUpLoad类:

    package cn.mvc.fileupload;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    import javax.servlet.http.HttpSession;
    import java.io.File;
    import java.io.IOException;
    
    @Controller
    @RequestMapping("/fileUpLoad")
    public class FileUpLoad {
    
        @RequestMapping("/fileUp")
        public String fileupload(HttpSession session, MultipartFile file, String auth) throws IOException {
            System.out.println(auth);
            System.out.println(file);
            if(!file.isEmpty()){
                String filename = file.getOriginalFilename();
                String path = session.getServletContext().getRealPath("/WEB-INF/upload");
                File upfile = new File(path+"\"+filename);
                file.transferTo(upfile);
    
            }
    
    
            return "index";
        }
    
    }

      两个页面Upload和index页面:

    <%--
      Created by IntelliJ IDEA.
      User: WangDaYe
      Date: 2019/11/11
      Time: 11:24
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>FileUp</title>
    </head>
    <body>
        <form action="/fileUpLoad/fileUp" method="post" enctype="multipart/form-data">
            <input type="file" name="file">
           <%-- <input type="file" name="files">
            <input type="file" name="files">--%>
    
            <input type="text" name="auth">
            <input type="submit" value="提交">
        </form>
    
    </body>
    </html>
    <%@page language="java" pageEncoding="utf-8" autoFlush="true" isELIgnored="false" contentType="text/html; utf-8"%>
    
    <html>
    <body>
    
        <h2>Hello World!</h2>
       <%-- <h1>文件上传</h1>
        <form action="" method="post" enctype="multipart/form-data" >
            用户名:<input type="text" name="username" ><br/>
            文件上传:<input type="file" name="image" ><br/>
            <input type="submit" ><br/>
        </form>
    
        <h1>文件下载</h1>
        <a href="">下载</a>
        <a href="">下载2</a>--%>
    
    </body>
    </html>

      运行 添加文件:

     提交之后添加成功 跳转到index页面

    项目里就会出现:

      

    多文件上传:

      

      多文件上传只需修改如下两处

      1.

     

    <%--
      Created by IntelliJ IDEA.
      User: WangDaYe
      Date: 2019/11/11
      Time: 11:24
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>FileUp</title>
    </head>
    <body>
        <form action="/fileUpLoad/fileUps" method="post" enctype="multipart/form-data">
            <input type="file" name="files">
              <input type="file" name="files">
            <input type="file" name="files">
    
            <input type="text" name="auth">
            <input type="submit" value="提交">
        </form>
    
    </body>
    </html>

      2.

    package cn.mvc.fileupload;
    
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpSession;
    import java.io.File;
    import java.io.IOException;
    
    
    @Controller
    @RequestMapping("/fileUpLoad")
    public class FileUpLoad {
    
    
        @RequestMapping("/fileUps")
        public String fileuploads(HttpSession session, @RequestParam MultipartFile[] files, String auth) throws IOException {
            System.out.println(auth);
            System.out.println(files);
            for (MultipartFile filee:files) {
    
                if(!filee.isEmpty()){
                    String filename = filee.getOriginalFilename();
                    String path = session.getServletContext().getRealPath("/WEB-INF/upload");
                    File upfile = new File(path+"\"+filename);
                    filee.transferTo(upfile);
    
                }
            }
    
            return "index";
        }
    
    }

      测似结果和上边一样只是多个文件而已

    文件下载:

    import java.io.File;
    import java.io.IOException;
     
    import org.apache.commons.io.FileUtils;
    import org.springframework.context.annotation.Scope;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.MediaType;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RequestMapping;
     
    @Component
    @Scope("prototype") 
    @RequestMapping("/downloadFile")
    public class DownloadAction
    {
     
        @RequestMapping("download")  
        public ResponseEntity<byte[]> download() throws IOException {  
            String path="D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\springMVC\WEB-INF\upload\图片10(定价后).xlsx";
            File file=new File(path);
            HttpHeaders headers = new HttpHeaders();  
            String fileName=new String("你好.xlsx".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
            headers.setContentDispositionFormData("attachment", fileName); 
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); 
            return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),  
                                              headers, HttpStatus.CREATED);  
        }  
    }
     
    <a href="./downloadFile/download" >下载</a>

     在页面里面写上边一句,便可以下载文件

  • 相关阅读:
    英文字典。怎样设计数据结构
    最近看的几部电影电视剧
    pylucene 中文
    提高浏览体验的五十个最佳FireFox扩展插件
    结构和细节
    <传> 《程序猿装B指南》,程序员童鞋们请认真学习
    c++ builder TTreeView customSort 实现 自定义排序
    《转》c++ 字符串系列:字符编码进阶(下)
    庆祝我又读完一本书
    c++ 回调函数深究
  • 原文地址:https://www.cnblogs.com/wangdayexinyue/p/11837291.html
Copyright © 2011-2022 走看看