java - Spring FileSystemResource NoSuchFileException

标签 java spring spring-boot kotlin spring-webflux

我正在使用 FileSystemResource 和 Spring Webflux 来提供硬盘驱动器中的文件。

@GetMapping("/news/file")
fun getImage(@RequestParam name: String): FileSystemResource {
    return FileSystemResource(propsStorage.path + "/" + name)
}

当用户请求未知文件时,应该捕获该文件并返回 404 错误。

但是我收到此错误:

java.nio.file.NoSuchFileException: C:\Users\SomeUser\Work\posts\32.jpg
    at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85)
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

不幸的是我不知道如何捕获错误。 如果你愿意的话,你可以用Java回答,我两种语言都听得懂。

最佳答案

您还可以利用 Spring FilesystemResource api 存在避免 FileNotFoundException

的方法
 fs =FileSystemResource(propsStorage.path + "/" + name)
if(fs.exists())
 return fs
else
return new ResponseEntity<>("File Not Found", HttpStatus.NOT_FOUND);

我还看到您使用“/”作为分隔符,请注意,在 Windows 计算机上,文件分隔符是“”。因此,为了正确遵守,请使用 Paths.separator

关于java - Spring FileSystemResource NoSuchFileException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63884242/

相关文章:

java - Eclipse - 错误 : <wicket:panel> is not recognized

java - 如果我还不知道涉及的任何框架,我应该采用什么方法来理解大型 J2EE 应用程序?

java - Ignite 启动时间过长,并且在应用程序运行时经常失败

java - 使用 Spring Security 禁用编辑功能

java - Sprite 的对角线运动

java - GWT Canvas 的命中检测 - 绘图的哪种策略?

java - 自定义类加载器时,两个groovy类相互导入导致循环编译错误

Spring Boot Multitenancy - Hibernate - 使用ddl-auto在实体结构改变时更新所有模式

java - 使用 Spring Data Cassandra 动态创建键空间、表和生成表

spring - 无法执行CommandLineRunner-Spring Batch