我需要在 Spring Boot 应用程序中提供静态 csv 文件,以便浏览器可以从服务器下载它。正如在多个文档中所读到的,Spring Boot 默认提供 src/main/resources 的内容。
我刚刚将我的sample-user-creation.csv 文件保存在 src/main/resources 文件夹中。除此之外,我没有添加任何代码行来使其工作。
我正在尝试使用 GET 请求下载文件:
http://localhost:8080/sample-user-creation.csv
但是根本不起作用。
我也尝试过设置:
spring.mvc.static-path-pattern=/content/**
并尝试使用:
http://localhost:8080/content/sample-user-creation.csv
这也行不通。
我正在使用 Spring Security,并且还尝试将文件的 requestMatchers 显式设置为 PermitAll() 但这也不起作用。
.authorizeHttpRequests((auth) -> auth
.requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
.requestMatchers("/admin/**")
.hasRole("ADMIN")
.requestMatchers(HttpMethod.POST, "/public/login").permitAll()
.requestMatchers(HttpMethod.POST, "/public/register")
.permitAll()
.requestMatchers("/sample-user-creation.csv").permitAll()
.anyRequest().authenticated()
)
为什么这对我不起作用。所有文档都说这是默认行为,无需任何配置即可工作。
我在这里做错了什么吗?或者我需要添加任何其他配置吗?
添加更多细节:
Spring 不提供
resources
文件夹中的静态内容;它从类路径上名为 resources
的文件夹提供服务。
在资源文件夹中,放置一个名为
/static
、/public
或 /resources
的文件夹。然后放置在此文件夹中的任何文件都将作为静态内容。
因此,就您的情况而言,请考虑在
/src/main/resources
内添加一个名为 static
的文件夹。在静态文件夹中,添加您的文件,sample-user-creation.csv
。启动您的应用程序,您应该能够访问应用程序根目录下的该文件,http://localhost:8080/sample-user-creation.csv
如果您仍然设置了静态路径,例如
spring.mvc.static-path-pattern=/content/**
,可在 http://localhost:8080/content/sample-user-creation.csv` 获取