首页 > 解决方案 > 将 pdf 作为静态资源从在 docker 容器中运行的 spring 应用程序提供

问题描述

当我尝试从 localhost/pdfs/filename.pdf 打开Pdf 文件时,它是空白的,但是当我对图片执行此操作时,它可以工作 (localhost/images/imagename.png) 我的应用程序在 docker 容器中运行。

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

   @Autowired
   private ApplicationEventPublisher publisher;

   @Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/images/**").addResourceLocations("classpath:/static/images/").setCachePeriod(31556926);
    registry.addResourceHandler("/pdfs/**").addResourceLocations("classpath:/static/pdfs/").setCachePeriod(31556926);

   }
}

文件夹,图像和 pdf,都在src/main/resources/static文件夹内。

为什么它适用于图像文件但不适用于pdf文件?谢谢。

标签: javaspringdockerspring-bootpdf

解决方案


我有同样的问题 - 这是由 Maven 过滤资源引起的。排除 *.pdf 有助于解决问题:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <delimiters>
            <delimiter>@</delimiter>
        </delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

推荐阅读