spring boot上传文件到服务器
- 行业动态
- 2024-01-19
- 2
使用Spring Boot可以轻松实现文件上传到服务器。需要在项目中引入相关依赖,然后配置MultipartResolver和WebMvcConfigurerAdapter。接下来,创建一个控制器类,处理 文件上传请求,并将文件保存到指定的目录。通过前端页面或API调用该控制器方法,实现文件上传功能。
在Spring Boot中,上传文件到服务器可以通过以下步骤实现:
1、添加依赖
在项目的pom.xml文件中添加Spring Boot Web和Apache Commons FileUpload的依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> </dependencies>
2、创建文件上传控制器
创建一个名为FileUploadController的类,并使用@RestController注解标记,在这个类中,定义一个处理文件上传的方法,方法的参数是一个MultipartFile类型的对象,表示上传的文件,在方法内部,可以使用MultipartFile对象的getOriginalFilename()方法获取文件名,getSize()方法获取文件大小,以及transferTo()方法将文件保存到服务器的指定目录。
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; @RestController public class FileUploadController { @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { if (file.isEmpty()) { return "文件为空"; } String fileName = file.getOriginalFilename(); String filePath = "/your/server/directory/" + fileName; File dest = new File(filePath); try { file.transferTo(dest); return "文件上传成功"; } catch (IOException e) { e.printStackTrace(); } return "文件上传失败"; } }
3、配置跨域访问
由于浏览器的安全限制,需要配置跨域访问才能实现文件上传,在项目的主类中添加一个WebMvcConfigurerAdapter的子类,并重写addCorsMappings方法,允许所有域名进行跨域访问。
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") .maxAge(168000) .allowedHeaders("*"); } }
4、测试文件上传功能
启动项目后,可以使用Postman或其他HTTP客户端工具向/upload接口发送POST请求,携带一个名为file的文件参数,如果文件上传成功,服务器会返回"文件上传成功"的消息,如果文件上传失败,服务器会返回"文件上传失败"的消息,可以在指定的服务器目录中找到上传的文件。
相关问题与解答:
1、为什么需要添加Apache Commons FileUpload依赖?
答:因为Spring Boot本身不包含处理文件上传的功能,需要使用第三方库来实现,Apache Commons FileUpload是一个常用的Java文件上传库,可以方便地处理文件上传。
2、为什么要配置跨域访问?
答:由于浏览器的安全限制,不同域名之间的请求默认是不允许携带资源的,为了实现文件上传功能,需要允许其他域名进行跨域访问,通过配置跨域访问,可以解决这个问题。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/352849.html