【问题标题】:Spring boot load image after upload上传后的Spring Boot加载图像
【发布时间】:2017-01-20 18:06:52
【问题描述】:

我能够将图像上传到服务器,并且可以在路径/static/images/gallery 中找到我的图像。现在,当我尝试加载上传的图像时,应用程序不显示主题。仅在应用程序重新启动后。

【问题讨论】:

  • 请发布与显示图像相关的代码,以及您遇到的错误的详细信息;因为这个问题太模糊了,任何人都无法提供帮助。

标签: java spring image upload


【解决方案1】:

我遇到了同样的问题!因为静态目录是在启动时加载的!您必须将上传路径放在资源之外! 让这个项目名称为“Demo”。我认为您的目录是这样的:

Demo
  ∟ src
    ∟ main
      ∟ java
      ∟ resources
        ∟ static
          ∟ images
            ∟ gallery

不要把你上传的目录放在资源里! 你可以这样做:

@Configuration
public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/upload/**").addResourceLocations("file://" + System.getProperty("user.dir") + "/src/main/upload/");
  }
}

文件:你的固定路径!

现在你的目录是这样的:

    Demo
      ∟ src
        ∟ main
          ∟ java
          ∟ resources
            ∟ static
              ∟ images
                ∟ gallery
          ∟ upload
            ∟ static
              ∟ images
                ∟ gallery

好的!重启你的弹簧靴!尝试上传一些图片!你可以在http://localhost:80/upload/static/images/gallery/demo.jpg看到这些图片

【讨论】:

  • 请注意,添加资源位置时应使用file:/// 而不是file://
【解决方案2】:

只要考虑一下war、jar、ear -> 简单地说-> 部署的Java 应用程序是归档文件,归档文件在创建后是不可更改的。在我们的例子中,这意味着当您在路径中保存任何资源时,它正在加载到尚未构建的应用程序路径(项目)......但是您尝试获取资源的应用程序是构建的存档文件,它不存在请求的资源然而。重新启动应用程序后再次构建并创建新的存档文件->这就是它现在可见的原因;)))。解决方案如前所述 ->

  1. 只需将资源保存在项目之外,然后
  2. 授予对该路径的应用程序读/写权限。
  3. 使用绝对路径。

【讨论】:

    【解决方案3】:

    静态目录在启动时加载。因此,当您上传图像或更改静态文件夹下的任何文件或文件夹时,不会反映为 ApplicationContext 已经初始化。

    要上传动态图片,您可以按照以下步骤操作:

    第 1 步: 在静态文件夹之外创建一个目录,例如 media 我在服务器上创建的

    /var/www/html/myapp/media
    

    第 2 步:上传媒体目录中的文件。

    第 3 步: 实施 WebMvcConfigurer。

    @Configuration
    public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {
    
      @Override
      public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/media/**").addResourceLocations("file:media/");
      }
    }
    

    上传后,您可以动态访问您的文件http://localhost:8080/media/filename.jpg

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 2021-11-10
      • 2016-08-09
      • 2018-08-13
      • 2018-12-07
      • 2019-09-23
      相关资源
      最近更新 更多