首页 > 编程语言 > 详细

深圳风采计划:springboot文件上传下载,转载的

时间:2019-03-22 11:00:39      阅读:71      评论:0      收藏:0      [点我收藏+]

深圳风采开奖直播 www.nskjr.cn 标签:apache   dir()   dash   version   The   ted   line   存在   提交   

Spring Boot入门——文件上传与下载

原文来自:https://www.cnblogs.com/studyDetail/articles/7003253.html

1、在pom.xml文件中添加依赖

 

 

<project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

 

  <groupId>com.wyl</groupId>

  <artifactId>SpringBootFile</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

 

  <name>SpringBootFile</name>

  <url>//maven.apache.org</url>

 

  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <java.version>1.7</java.version>

  </properties>

  

  <parent>

      <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.5.3.RELEASE</version>

  </parent>

 

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

    

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    

    <!-- thymeleaf模板插件 -->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-thymeleaf</artifactId>

    </dependency>

    

    <!-- devtools插件,热部署 -->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-devtools</artifactId>

        <optional>true</optional>

        <scope>true</scope>

    </dependency>

    

  </dependencies>

</project>

 

2、application.properties文件中取消模板文件缓存

 

spring.thymeleaf.cache=false

3、编写模板文件

 

 

file.html

 

<!DOCTYPE html>

<html xmlns="//www.w3.org/1999/xhtml" xmlns:th="//www.thymeleaf.org"  

      xmlns:sec="//www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>

<meta charset="UTF-8" />

<title>Insert title here</title>

</head>

<body>

    <h1 th:inlines="text">文件上传</h1>

    <form action="fileUpload" method="post" enctype="multipart/form-data">

        <p>选择文件: <input type="file" name="fileName"/></p>

        <p><input type="submit" value="提交"/></p>

    </form>

</body>

</html>

 

 

multifile.html

<!DOCTYPE html>

<html xmlns="//www.w3.org/1999/xhtml" xmlns:th="//www.thymeleaf.org"  

      xmlns:sec="//www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>

<meta charset="UTF-8" />

<title>Insert title here</title>

</head>

<body>

    <h1 th:inlines="text">文件上传</h1>

    <form action="multifileUpload" method="post" enctype="multipart/form-data" >

        <p>选择文件1: <input type="file" name="fileName"/></p>

        <p>选择文件2: <input type="file" name="fileName"/></p>

        <p>选择文件3: <input type="file" name="fileName"/></p>

        <p><input type="submit" value="提交"/></p>

    </form>

</body>

</html>

 

4、编写Controller

 

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

 

@Controller

public class FileUploadController {

 

    /*

     * 获取file.html页面

     */

    @RequestMapping("file")

    public String file(){

        return "/file";

    }

    

    /**

     * 实现文件上传

     * */

    @RequestMapping("fileUpload")

    @ResponseBody 

    public String fileUpload(@RequestParam("fileName") MultipartFile file){

        if(file.isEmpty()){

            return "false";

        }

        String fileName = file.getOriginalFilename();

        int size = (int) file.getSize();

        System.out.println(fileName + "-->" + size);

        

        String path = "F:/test" ;

        File dest = new File(path + "/" + fileName);

        if(!dest.getParentFile().exists()){ //判断文件父目录是否存在

            dest.getParentFile().mkdir();

        }

        try {

            file.transferTo(dest); //保存文件

            return "true";

        } catch (IllegalStateException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            return "false";

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

            return "false";

        }

    }

 

  /*

     * 获取multifile.html页面

     */

    @RequestMapping("multifile")

    public String multifile(){

        return "/multifile";

    }

    

    /**

     * 实现多文件上传

     * */

    @RequestMapping(value="multifileUpload",method=RequestMethod.POST) 

  /**public @ResponseBody String multifileUpload(@RequestParam("fileName")List<MultipartFile> files) */

    public @ResponseBody String multifileUpload(HttpServletRequest request){

        

        List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("fileName");

        

        if(files.isEmpty()){

            return "false";

        }

 

        String path = "F:/test" ;

        

        for(MultipartFile file:files){

            String fileName = file.getOriginalFilename();

            int size = (int) file.getSize();

            System.out.println(fileName + "-->" + size);

            

            if(file.isEmpty()){

                return "false";

            }else{        

                File dest = new File(path + "/" + fileName);

                if(!dest.getParentFile().exists()){ //判断文件父目录是否存在

                    dest.getParentFile().mkdir();

                }

                try {

                    file.transferTo(dest);

                }catch (Exception e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                    return "false";

                } 

            }

        }

        return "true";

    }

}

 

5、测试

 

  

 

  

 

6、多文件上传中遇到的问题

 

org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field fileName exceeds its maximum permitted size of 1048576 bytes.

Spring Boot默认文件上传大小为2M,多文档上传中总是出现文件大小超出限度

 

解决方法:

 

a、在application.properties文件中设置文件大小

 

# Single file max size  

multipart.maxFileSize=50Mb

# All files max size  

multipart.maxRequestSize=50Mb

  但是,事实证明此种方法不能够解决以上问题

 

b、在启动类App.class文件中配置Bean来设置文件大小

 

 

import javax.servlet.MultipartConfigElement;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.web.servlet.MultipartConfigFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

/**

 * Hello world!

 *

 */

@SpringBootApplication

@Configuration

public class App 

{

    public static void main( String[] args )

    {

        System.out.println( "Hello World!" );

        SpringApplication.run(App.class, args);

    }

    

    /**  

     * 文件上传配置  

     * @return  

     */  

    @Bean  

    public MultipartConfigElement multipartConfigElement() {  

        MultipartConfigFactory factory = new MultipartConfigFactory();  

        //单个文件最大  

        factory.setMaxFileSize("10240KB"); //KB,MB  

        /// 设置总上传数据总大小  

        factory.setMaxRequestSize("102400KB");  

        return factory.createMultipartConfig();  

    }  

 

7、文件下载

 

 

@RequestMapping("download")

    public String downLoad(HttpServletResponse response){

        String filename="2.jpg";

        String filePath = "F:/test" ;

        File file = new File(filePath + "/" + filename);

        if(file.exists()){ //判断文件父目录是否存在

            response.setContentType("application/force-download");

            response.setHeader("Content-Disposition", "attachment;fileName=" + filename);

            

            byte[] buffer = new byte[1024];

            FileInputStream fis = null; //文件输入流

            BufferedInputStream bis = null;

            

            OutputStream os = null; //输出流

            try {

                os = response.getOutputStream();

                fis = new FileInputStream(file); 

                bis = new BufferedInputStream(fis);

                int i = bis.read(buffer);

                while(i != -1){

                    os.write(buffer);

                    i = bis.read(buffer);

                }

                

            } catch (Exception e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            System.out.println("----------file download" + filename);

            try {

                bis.close();

                fis.close();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

        return null;

    }

 

标签: Spring Boot

springboot文件上传下载,转载的

标签:apache   dir()   dash   version   The   ted   line   存在   提交   

原文:https://www.cnblogs.com/xiaohouzai/p/10576009.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
? 2014 深圳风采开奖直播 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号

  • 市中级人民法院开展形式多样节能减排活动 2019-04-25
  • 北京市下发文件 要求做好人民网网民留言办理工作 2019-04-24
  • 2017全国两会——问答更优路径 把脉更快发展——西部网 陕西头条 2019-04-24
  • 端午出行走雅康高速 请先看看这份出行指南 2019-04-23
  • 将“最多跑一次”改革进行到底 2019-04-22
  • 第十二届人民企业社会责任奖颁奖典礼举行 2019-04-21
  • 图解:谁是北京雾霾元凶?燃煤已经排除嫌疑了 2019-04-20
  • 爱吃酸的人,可能更敢冒险 2019-04-20
  • 中央纪委公开曝光八起违反中央八项规定精神问题 2019-04-19
  • 昔日“龙须沟” 今变清水渠 2019-04-18
  • 美容养颜 别忘了桃胶皂角米雪耳羹 2019-04-17
  • 这部非虚构原作改编美剧,冷静展示“9·11”背后人性纠缠 2019-04-17
  • 做奋斗者  做实干家 2019-04-16
  • 天津专家共话智慧医疗让群众享受信息化带来的福音 2019-04-16
  • 古龙与金庸打架方式之不同 2019-04-15
  • 702| 846| 374| 106| 103| 893| 873| 654| 1| 146|