springboot 文件上传

来源:互联网 发布:nginx server 配置 编辑:程序博客网 时间:2024/05/01 12:06

maven比较简单,还是自己常用的那些,这里就不上传了,文件没存到项目中,存在磁盘当中

文件上传首先清理缓存在application.properties配置

spring.thymeleaf.cache=false

 

单个文件上传

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>文件上传</title></head><body><h1 th:inlines="text">文件上传</h1><form action="fileUpload" method="post" enctype="multipart/form-data">    <p>选择文件: <input type="file" name="fileNameOne"/></p>    <p><input type="submit" value="提交"/></p></form></body></html>

访问页面

@Controller@RequestMapping("test")public class FileController {    @RequestMapping("file")    public String file() {return "file";}

文件上传的方法

@RequestMapping("fileUpload")@ResponseBodypublic String fileUpload(@RequestParam("fileNameOne") MultipartFile file) {    if (file.isEmpty()) {        return "false";    }    //获取文件名称    String fileNameOne = file.getOriginalFilename();    //文件长度    int size = (int) file.getSize();    System.out.println(fileNameOne + "-->" + size);    //获取文件后缀名称    String suffixName = fileNameOne.substring(fileNameOne.lastIndexOf("."));    System.out.println("后缀名为:" + suffixName);    //文件上传的路径    String filePath = "d://testFile//";    //解决中文问题可以加uuid    fileNameOne = UUID.randomUUID() + suffixName;    File files = new File(filePath + fileNameOne);    //检测目录是否存在    if (!files.getParentFile().exists()) {        files.getParentFile().mkdirs();    }    try {        file.transferTo(files);        return "上传成功";    } catch (IllegalStateException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    }    return "上传失败";}

多文件上传

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>多文件上传</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>

访问页面

@RequestMapping("multifile")public String multifile() {return "multifile";}

多文件上传方法

@RequestMapping(value="multifileUpload",method=RequestMethod.POST)@ResponseBodypublic String multifileUpload(HttpServletRequest request){    List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("fileName");    if(files.isEmpty()){        return "false";    }    String path = "d://testFile//" ;    for(MultipartFile file:files){        String fileName = file.getOriginalFilename();        System.out.println(fileName);        String suffixName = fileName.substring(fileName.lastIndexOf("."));        fileName = UUID.randomUUID() + suffixName;        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 "上传失败";            }        }    }    return "上传成功";}

多文件上传可能遇到文件过大问题springboot默认上传大小为2M,我们可以做以下配置:

第一种(这种方法解决不了多文件上传的实质问题)

#多文件上传限制图片大小# Single file max sizemultipart.maxFileSize=60Mb# All files max sizemultipart.maxRequestSize=60Mb

第二种在启动类App.class文件中配置Bean来设置文件大小

@SpringBootApplication@Configurationpublic class KuaidiApplication {   public static void main(String[] args) {      SpringApplication.run(KuaidiApplication.class, args);   }   @Bean   public MultipartConfigElement multipartConfigElement(){      MultipartConfigFactory factory = new MultipartConfigFactory();      factory.setMaxFileSize("10240KB");      factory.setMaxRequestSize("102400KB");      return factory.createMultipartConfig();   }}


原创粉丝点击