Spring Boot / MVC:如何使用特殊字符在JAR外部提供静态文件?

时间:2018-03-26 11:11:55

标签: java spring-mvc spring-boot static-files

我目前正在开发一个项目,我需要提供驻留在文件系统上的静态文件(在JAR文件之外)。

我现在有什么:

@Configuration
@ComponentScan({"some.package"})
public class MaboConfiguration extends WebMvcConfigurerAdapter {

    /* Irrelevant configs omitted */

    @Value("${application.pdfpath}")
    public String pdfPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/files/**")
           .addResourceLocations("file:" + this.pdfPath);

        super.addResourceHandlers(registry);
     }
} 

这适用于已配置的“pdfPath”目录中的大多数文件。现在问题是,找不到包含特殊字符的文件(例如:“ä”,“ö”,“ü”,...),服务器返回404.

工作文件示例(给定pdfPath为/ opt / tst /):

"/opt/tst/tstdir/with some space/01 - my tst pdf.pdf" -> is served under
"http://localhost:8100/contextRoot/files/tstdir/with some space/01 - my tst pdf.pdf"

不工作文件的示例:

"/opt/tst/tstdir/with some space/01 - my ätst pdf.pdf" -> should be served under
"http://localhost:8100/contextRoot/files/tstdir/with some space/01 - my ätst pdf.pdf"

我认为这可能是编码问题。日志显示传入的请求是正确的URL编码(UTF-8,例如:“ä”变为“%C3%A4”)。虽然,使用跟踪,日志还显示弹簧将“%C3%A4”解析为“?”在寻找相应的文件时。

有没有办法告诉解析器使用特定的字符集来解析文件URL?

0 个答案:

没有答案