1. SpringBootが画像アップロード後にアクセスできなくなる問題を解決しました。
-
問題の説明
フロントエンドとバックエンドのプロジェクトが分離されていない
フロントエンド: thymeleaf
バックエンド: mybatis+springboot アーキテクチャ フロント
エンドにイメージをアップロードした後、指定されたローカル パスにアップロードします
。アイデアプロジェクト配下のresources/static/upload/img/**は
正常にアップロードされましたが、フォルダ内の http://ipアドレス:ポート番号/パス/xxx.png にもアクセスできますが、このような画像にはアクセスできません。 -
原因:
この原理はサーバーの保護対策によって引き起こされ、サーバーは実際のリソース パスを外部に公開できないため、仮想パス マッピング アクセスを構成する必要があります。 -
解決:
@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 イメージにアクセスするための名前