SpringBoot プロジェクトに画像をアップロードした後に SpringBoot が画像にアクセスできない問題を解決する

1. SpringBootが画像アップロード後にアクセスできなくなる問題を解決しました。

  1. 問題の説明
    フロントエンドとバックエンドのプロジェクトが分離されていない
    フロントエンド: thymeleaf
    バックエンド: mybatis+springboot アーキテクチャ フロント
    エンドにイメージをアップロードした後、指定されたローカル パスにアップロードします
    。アイデアプロジェクト配下のresources/static/upload/img/**は
    正常にアップロードされましたが、フォルダ内の http://ipアドレス:ポート番号/パス/xxx.png にもアクセスできますが、このような画像にはアクセスできません。

  2. 原因:
    この原理はサーバーの保護対策によって引き起こされ、サーバーは実際のリソース パスを外部に公開できないため、仮想パス マッピング アクセスを構成する必要があります。

  3. 解決:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    
    
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    
    
  //  /upload/**   为虚拟地址
  //file:///为真实的本地地址
  registry.addResourceHandler("/upload/**").addResourceLocations("file:///"+System.getProperty("user.dir")+"/src/main/resources/static/upload/img/");
        WebMvcConfigurer.super.addResourceHandlers(registry);

    }
}

2. 2 番目の解決策

spring.web.resources.static-locations=classpath:/static/,file:${
    
    upload.dir}
upload.dir = G:/2021_12_8/easypoi_springboot/src/main/resources/static/upload/img

classpath: 現在の静的リソースの保存場所を表します
Upload.dir: イメージが保存されている実際のパスを表します
http://localhost:ip/image イメージにアクセスするための名前
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/wyr1235/article/details/130294891