Spring Boot文件上传最新解决方案

网友投稿 247 2022-10-11


Spring Boot文件上传最新解决方案

一、创建一个简单的包含WEB依赖的SpringBoot项目

pom.xml内容:

org.springframework.boot

spring-boot-starter-web

javax.servlet

jstl

org.apache.tomcat.embed

tomcat-embed-jasper

二、配置文件上传的文件大小限制

application.properties配置文件添加:

# 上传文件总的最大值

spring.servlet.multipart.max-request-size=10MB

# 单个文件的最大值

spring.servlet.multipart.max-file-size=10MB

## jsp

spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp

spring.servlet.multipart.max-file-size限制单个文件的最大值

spring.servlet.multipart.max-request-size限制上传的多个文件的总大小

三、单文件上传示例

1、创建Controller控制类,内容如下:

package com.songguoliang.springboot.controller;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

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

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

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

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

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;

import java.io.File;

import java.io.IOException;

import java.util.List;

/**

* @Description

* @Author sgl

* @Date 2018-05-15 14:04

*/

@Controller

public class UploadController {

private static final Logger LOGGER = LoggerFactory.getLogger(UploadController.class);

@GetMapping("/upload")

public String upload() {

return "upload";

}

@PostMapping("/upload")

@ResponseBody

public String upload(@RequestParam("file") MultipartFile file) {

if (file.isEmpty()) {

return "上传失败,请选择文件";

}

String fileName = file.getOriginalFilename();

String filePath = "/Users/itinypocket/workspace/temp/";

File dest = new File(filePath + fileName);

try {

file.transferTo(dest);

LOGGER.info("上传成功");

return "上传成功";

} catch (IOException e) {

LOGGER.error(e.toString(), e);

}

return "上传失败!";

}

}

2、创建upload.jsp文件

只有一个表单,选择文件,form的enctype为multipart/form-data:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>


3、通过springboot插件启动项目,浏览器输入http://localhost:8080/upload:

选择文件点击提交按钮返回成功信息,我们上传的文件保存在/Users/itinypocket/workspace/temp路径下:

四、多文件上传

1、创建多文件上传的jsp页面,多文件上传页面只是比单文件上传多了file选择的input而已,multiUpload.jsp内容如下:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>




2、在UploadController里添加多文件上传的方法

@GetMapping("/multiUpload")

public String multiUpload() {

return "multiUpload";

}

@PostMapping("/multiUpload")

@ResponseBody

public String multiUpload(HttpServletRequest request) {

List files = ((MultipartHttpServletRequest) request).getFiles("file");

String filePath = "/Users/itinypocket/workspace/temp/";

for (int i = 0; i < files.size(); i++) {

MultipartFile file = files.get(i);

if (file.isEmpty()) {

return "上传第" + (i++) + "个文件失败";

}

String fileName = file.getOriginalFilename();

File dest = new File(filePath + fileName);

try {

file.transferTo(dest);

LOGGER.info("第" + (i + 1) + "个文件上传成功");

} catch (IOException e) {

LOGGER.error(e.toString(), e);

return "上传第" + (i++) + "个文件失败";

}

}

return "上传成功";

}

3、重启服务,浏览器输入http://localhost:8080/multiUpload:

4、然后选择要上传的文件,点击提交按钮,得到成功信息:

我们选择的三个文件已被成功上传到/Users/itinypocket/workspace/temp路径下。

分享一个零基础,通俗易懂,而且非常风趣幽默的人工智能教程(如不能直接点击访问,请以“右键”->“在新标签页中打开链接”方式打开)网站,网址:https://cbedai.net/gnailoug/

源码:

github

码云


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:四大API管理平台推荐!哪个是更好的API管理平台
下一篇:汉源高科千兆2光6电8口全千兆二层网管型工业以太网交换机ERPS环网交换机
相关文章

 发表评论

暂时没有评论,来抢沙发吧~