画像の仮想パスの設定

13792 ワード

1.はじめに
  • 仮想パスを構成する理由
  • 画像をサーバにアップロードする必要がある場合、データベースに画像を格納するbase 64は明らかに良い方法ではありません.物理パスまたは仮想パス
  • に格納できます
  • 物理パスを採用すると、プロジェクトがオンラインになった後、画像が取得できない可能性が高い.また、システムがアップグレードされ、全量の更新が必要な場合、すべてのリソースをコピーして更新する必要があります.これは面倒です.
  • 仮想パスを使用すれば、URLで画像を取得できます.
  • url="http://自分のドメイン名/プロジェクト名/images/"+fileName;



  • 2.構成
  • は一般的にプロファイルで構成できますが、既存のフレームワークを使用している場合は、オンラインでプロジェクトモジュールに接続できるjarパッケージで、プロファイルを変更することはできません.では、構成クラスを書くことができます.
  • import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    /**
     *         ,      ,            
     * @author chencf
     *
     */
    @Configuration
    public class MyWebAppConfigurer
            implements WebMvcConfigurer {
        @Value("file:/D:/fileUpload/")
        private String imagesPath;//    
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            System.out.println("    =="+imagesPath);
            registry.addResourceHandler("/images/**").addResourceLocations(imagesPath);
        }
    }
    
  • このように、ファイルをアップロードすると、DディスクのfileUploadフォルダにファイルが格納され、url(http://自分のドメイン名/images/ファイル名.ピクチャタイプ)でピクチャにアクセスできます.

  • 3.ファイルアップロード
    バックエンドコード:
    public Sspfy uploadFile( MultipartFile file,Sspfy sspfy) {
    		String url;
    
    		System.out.print("    ==="+"
    "
    ); // String fileName = file.getOriginalFilename(); System.out.print(" : "+fileName+"
    "
    ); // String contentType=file.getContentType(); fileName =UUID.randomUUID().toString().replace("-", "")+ fileName.substring(fileName.lastIndexOf('.')); System.out.print(" : "+fileName+"
    "
    ); String path = "D:/fileUpload/" +fileName; // System.out.print(" "+path+"
    "
    ); // File dest = new File(path); // if (!dest.getParentFile().exists()) { dest.getParentFile().mkdir(); } // try { file.transferTo(dest); // System.out.print(" "+path+"
    "
    ); url="http://localhost:8085/images/"+fileName;// sspfy.setName(fileName); sspfy.setPath(path); sspfy.setHousePhoto(url); } catch (IOException e) { e.printStackTrace(); } return sspfy; }

    フロントエンドコード:
    <div class="col-sm-10">
    	<a href="${sspfy.housePhoto!}" target="_blank"><img src="${sspfy.housePhoto!}" width="600"/>a>
    div>