当前位置:首页 > 行业动态 > 正文

spring boot上传文件到服务器

使用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、为什么要配置跨域访问?

答:由于浏览器的安全限制,不同域名之间的请求默认是不允许携带资源的,为了实现文件上传功能,需要允许其他域名进行跨域访问,通过配置跨域访问,可以解决这个问题。

0

随机文章