73

Spring Boot Web アプリケーションがあり、Linode VPS の共有 Dropbox ディレクトリ (~/Dropbox/images) にある静的コンテンツを提供したいと考えています。Spring Boot が静的コンテンツを自動的に提供することを読みました。

"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/",

もちろん、私の Dropbox ディレクトリはクラスパスにありません。

Dropbox フォルダー内の画像を提供するように Apache を構成することもできますが、Spring Security を利用して、静的コンテンツへのアクセスを認証済みユーザーに制限したいと考えています。

4

12 に答える 12

35

Springboot (Spring 経由) により、既存のリソース ハンドラーへの追加が容易になりました。Dave Syersの回答を参照してください。既存の静的リソース ハンドラーに追加するには、既存のパスをオーバーライドしないリソース ハンドラー パスを必ず使用してください。

以下の 2 つの「また」の注意事項は引き続き有効です。

. . .

[編集: 以下のアプローチはもはや有効ではありません]

デフォルトの静的リソース ハンドラーを拡張したい場合は、次のように動作するようです。

@Configuration
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class CustomWebMvcAutoConfig extends
                    WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    String myExternalFilePath = "file:///C:/Temp/whatever/m/";

    registry.addResourceHandler("/m/**").addResourceLocations(myExternalFilePath);

    super.addResourceHandlers(registry);
  }

}

super.addResourceHandlersデフォルトのハンドラーを設定する呼び出し。

また:

  • 外部ファイル パスの末尾のスラッシュに注意してください。(URL マッピングに対する期待に応じて異なります)。
  • WebMvcAutoConfigurationAdapterのソース コードを確認することを検討してください。
于 2014-11-14T21:46:31.977 に答える
9

spring.resources.staticLocationsで設定できるプロパティがありapplication.propertiesます。これにより、デフォルトの場所が上書きされることに注意してください。を参照してくださいorg.springframework.boot.autoconfigure.web.ResourceProperties

于 2015-11-22T05:59:14.587 に答える
9
  • OS:ウィン10
  • スプリング ブート: 2.1.2

c:/images から静的コンテンツを提供したかった

このプロパティを追加するとうまくいきました:

spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:///C:/images/

Spring Boot Doc Appendix Aでプロパティの元の値を見つけました

これにより、c:/images/image.jpg がhttp://localhost:8080/image.jpgとしてアクセスできるようになります。

于 2019-04-02T20:22:04.640 に答える
1

spring.resources.static-locationsFWIW、上記の推奨事項では成功しませんでした。私にとってうまくいったのは、spring.thymeleaf.prefix を設定することでした:

report.location=file:/Users/bill/report/html/
spring.thymeleaf.prefix=${report.location}
于 2018-05-31T20:20:06.567 に答える