java - Spring boot - 在 Get 请求中从文件系统中抓取文件

标签 java spring spring-boot

我正在尝试从文件系统中获取文件(在本例中为图像)并显示它。我可以很好地从资源子目录执行此操作,但是当我尝试转到文件系统时,它会给我一个 FileNotFound 异常。

java.io.FileNotFoundException: file:\Y:\Kevin\downloads\pic_mountain.jpg(文件名、目录名或卷标语法不正确)

我的所有其余代码都是从 Initialize 生成的 vanilla spring boot。谢谢。

@RestController
public class ImageProducerController {

    @GetMapping("/get-text")
    public @ResponseBody String getText() {
        return "Hello World";
    }

    @GetMapping(value = "/get-jpg", produces = MediaType.IMAGE_JPEG_VALUE)
    public void getImage(HttpServletResponse response) throws IOException {

        FileSystemResource imgFile = new FileSystemResource("file:///Y:/Kevin/downloads/pic_mountain.jpg");
//        ClassPathResource imgFile = new ClassPathResource("images/pic_mountain.jpg");
        System.out.println(imgFile.getURL());
        response.setContentType(MediaType.IMAGE_JPEG_VALUE);
        StreamUtils.copy(imgFile.getInputStream(), response.getOutputStream());
    }
}

最佳答案

来自 docs :

public FileSystemResource(String path)
Create a new FileSystemResource from a file path

构造函数需要 url 的路径部分,因此在您的情况下只有 Y:/Kevin/downloads/pic_mountain.jpg

所以你应该尝试这样使用它:

FileSystemResource imgFile = new FileSystemResource("Y:/Kevin/downloads/pic_mountain.jpg");

顺便说一句。可能是您在路径中错过了“用户”吗? -> Y:/Users/Kevin/downloads/pic_mountain.jpg

关于java - Spring boot - 在 Get 请求中从文件系统中抓取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45908323/

相关文章:

java - 如何在构造函数中创建给定类型的新对象

java - 打包应用程序时获取包 org.springframework.transaction.annotation 不存在错误

spring-boot - 如何在 Spring Boot 应用程序中使用 Websphere liberty

java - 通过分段文件上传处理动态 key

java - 字符串索引超出范围 - 为什么会发生这种情况?

java - 有没有更好的方法来添加多个模拟交互?

java - 将每个循环中的对象实例从 thymeleaf html 文件传递​​到 Spring Controller

java - 由于 NoSuchBeanDefinitionException,无法测试 spring rest Controller

java - @RestController注解中的值有什么作用?

javascript - 如何从 <select> 检索值并将其放入隐藏的 JSTL 中