2016-08-01 114 views
0

我正在開發一個應用程序,我需要填充來自視圖的數據的pdf表單。在設置Spring Boot Security之前,一切正常。Spring Boot安全性:訪問新的PDF

我創建此PDF的文件夾設置爲公共。當我啓動應用程序時,我可以訪問在開始之前創建的所有PDF,但是當我創建一個新的應用程序時(我可以在文件系統上打開文件並檢查它是否正確創建),該文件的請求爲我提供了一個404找不到答案。

任何想法?

回答

0

您可以將您的pdf作爲static資源。通過Spring引導註冊pdf目錄。

以下配置註冊了pdf mime類型並配置了靜態資源。

@Configuration 
public class WebConfigurer implements EmbeddedServletContainerCustomizer { 

/** 
* Set up Mime types. 
*/ 
@Override 
public void customize(ConfigurableEmbeddedServletContainer container) { 
    MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); 
    // IE issue, see https://github.com/jhipster/generator-jhipster/pull/711 
    mappings.add("html", "text/html;charset=utf-8"); 
    // CloudFoundry issue, see https://github.com/cloudfoundry/gorouter/issues/64 
    mappings.add("json", "text/html;charset=utf-8"); 

    mappings.add("pdf", "application/pdf"); 

    container.setMimeMappings(mappings); 
} 

    .... 
} 

// Register static resources 
@Configuration 
public class AppMvcConfiguration extends WebMvcConfigurerAdapter { 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    // Including all static resources. 

    registry.addResourceHandler("/assets/**", 
       "/css/**", 
       "/img/**", 
       "/js/**", 
       "/pdf/**" 
     ).addResourceLocations("/assets/", 
       "/css/", 
       "/img/", 
       "/js/", 
       "/pdf/**" 
).resourceChain(true) 
    .addResolver(new PathResourceResolver()); 

    super.addResourceHandlers(registry); 

}}

+0

安東感謝您的回答。問題是服務器,而不是設置。當我創建一個文件時,我試圖將url發送到視圖,並且當服務器啓動時該文件不存在,所以現在不用sendig url,而是使用HttpServlet響應發送完整文件。 – nick85

+0

@ nick85我很高興你解決了你的問題。 –