Springbootは画像をアップロードして展示します

2814 ワード

私たちは普段、日常のプロジェクトで画像のアップロードとアクセスの光景によく遭遇します.普段、resourceやプロジェクトのどこかに画像を伝えることに慣れているかもしれません.これには、プロジェクトを再パッケージすると、これらの画像が失われるという欠点があります.この欠点を解決するために、画像のパスをプロジェクトの外に置くしかなく、springbootはプロジェクトの外のパスをマッピングするこの機能を統合しています.ps:もちろん、現在いくつかの大きなプロジェクトでは、複数のサブシステムがファイルのアップロードとダウンロードに使用されています.この場合、ファイルサーバを構築するのが最善の選択です.
アップロードの実装をご覧ください:http://www.jb51.net/article/114664.htmこの大神は中で詳しく話しています.
次にspringbootがプロジェクト外の画像にアクセスする方法を見てください.
まず、構成クラスを書きます.
application.propertiesファイルのパス構成は次のとおりです.
cbs.imagesPath=file:/E:/imagesuuuu/

構成クラスは次のとおりです.
package bp.config;

import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * @ClassName: WebAppConfig
 * @Description: TODO(              )
 * @author Administrator
 * @date 2017 7 11 
 */
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
         //            
    @Value("${cbs.imagesPath}")
    private String mImagesPath;
    //      
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if(mImagesPath.equals("") || mImagesPath.equals("${cbs.imagesPath}")){
            String imagesPath = WebAppConfig.class.getClassLoader().getResource("").getPath();
            if(imagesPath.indexOf(".jar")>0){
                imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));
            }else if(imagesPath.indexOf("classes")>0){
                imagesPath = "file:"+imagesPath.substring(0, imagesPath.indexOf("classes"));
            }
            imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/"))+"/images/";
            mImagesPath = imagesPath;
        }
        LoggerFactory.getLogger(WebAppConfig.class).info("imagesPath="+mImagesPath);
        registry.addResourceHandler("/images/**").addResourceLocations(mImagesPath);
        super.addResourceHandlers(registry);
    }
}

注意:アイテムにブロッカーがある場合は、次の方法で画像をブロックしないパスを追加する必要があります.
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/api/**").excludePathPatterns("/api/getLogin")
                .excludePathPatterns("/api/getExit");
        super.addInterceptors(registry);

    }

これにより、プロジェクトを起動する経路下の画像を取得することができる:アクセスアドレスは、例えば、localhost:8080/images/123である.png