首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring FileSystemResource NoSuchFileException

Spring FileSystemResource NoSuchFileException
EN

Stack Overflow用户
提问于 2020-09-14 20:21:19
回答 2查看 190关注 0票数 1

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

代码语言:javascript
复制
@GetMapping("/news/file")
fun getImage(@RequestParam name: String): FileSystemResource {
    return FileSystemResource(propsStorage.path + "/" + name)
}

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

然而,我得到了这个错误:

代码语言:javascript
复制
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回答,我两种语言都能听懂。

EN

回答 2

Stack Overflow用户

发布于 2020-09-14 20:49:01

您还可以使用spring FilesystemResource api exists方法来避免FileNotFoundException

代码语言:javascript
复制
 fs =FileSystemResource(propsStorage.path + "/" + name)
if(fs.exists())
 return fs
else
return new ResponseEntity<>("File Not Found", HttpStatus.NOT_FOUND);

我还看到你使用了'/‘作为分隔符,请注意在windows机器上文件分隔符是'’。因此,为了正确遵守,请使用Paths.separator

票数 2
EN

Stack Overflow用户

发布于 2020-09-14 20:30:48

您可以对java.nio.file.NoSuchFileException使用@ExceptionHandler方法,并返回404响应。

下面是Java语言,你可以用kotlin进行翻译。

代码语言:javascript
复制
@ExceptionHandler(NoSuchFileException.class)
public ResponseEntity<String> handleUnexpectedRollbackException(NoSuchFileException exception) {
    LOGGER.error("File not found",exception);
    return new ResponseEntity<>("File Not Found", HttpStatus.NOT_FOUND);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63884242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档