package com.javaweb.cms.util; 
 | 
  
 | 
import cn.hutool.cache.Cache; 
 | 
import cn.hutool.cache.CacheUtil; 
 | 
import com.javaweb.common.config.Global; 
 | 
import com.javaweb.common.utils.DateUtils; 
 | 
import com.javaweb.common.utils.StringUtils; 
 | 
import com.javaweb.common.utils.file.FileUploadUtils; 
 | 
import org.apache.http.HttpEntity; 
 | 
import org.apache.http.HttpResponse; 
 | 
import org.apache.http.client.methods.HttpGet; 
 | 
import org.apache.http.impl.client.CloseableHttpClient; 
 | 
import org.apache.http.impl.client.HttpClients; 
 | 
import org.slf4j.Logger; 
 | 
import org.slf4j.LoggerFactory; 
 | 
  
 | 
import java.io.File; 
 | 
import java.io.FileOutputStream; 
 | 
import java.io.InputStream; 
 | 
import java.net.HttpURLConnection; 
 | 
import java.net.URL; 
 | 
  
 | 
public class DownloadImageUtil { 
 | 
    static Logger logger = LoggerFactory.getLogger(DownloadImageUtil.class); 
 | 
    static Cache<String, String> downloadCache = CacheUtil.newLRUCache(1000); 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        System.out.println(downloadImageToLocal("http://old.duoguyu.com/uploads/201809/09/180909053041227.jpg","/test/test2")); 
 | 
    } 
 | 
    /** 
 | 
     * 检测一个网络路径文件是否存在 
 | 
     * @param url 
 | 
     * @return 
 | 
     */ 
 | 
    public static boolean checkNetUrlExists(String url){ 
 | 
        try{ 
 | 
            URL u = new URL(url); 
 | 
            HttpURLConnection urlcon = (HttpURLConnection) u.openConnection(); 
 | 
            if(urlcon.getResponseCode()==200){ 
 | 
                return true; 
 | 
            } 
 | 
        }catch (Exception ex){ 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 本地化网络路径图片 
 | 
     * @param urlPath 网络图片 
 | 
     * @param appendPath 追加一层目录如/book或/article 
 | 
     * @return 返回保存到本地的相对路径 
 | 
     */ 
 | 
    public static String downloadImageToLocal(String urlPath,String appendPath){ 
 | 
        try{ 
 | 
            if(!checkNetUrlExists(urlPath)){ 
 | 
                return ""; 
 | 
            } 
 | 
            String saveBathPath=Global.getUploadPath(); 
 | 
            if(StringUtils.isNotEmpty(appendPath)){ 
 | 
                appendPath=appendPath.startsWith("/")?appendPath:"/"+appendPath; 
 | 
                saveBathPath+=appendPath; 
 | 
            } 
 | 
            CloseableHttpClient httpclient = HttpClients.createDefault(); 
 | 
            //这里通过httpclient下载之前抓取到的图片网址,并放在对应的文件中 
 | 
            //String urlPath="http://v3cdn.duoguyu.com/oss/uploads/201803/08/180308100445561.jpg"; 
 | 
            HttpGet httpget = new HttpGet(urlPath); 
 | 
            String extension=com.google.common.io.Files.getFileExtension(urlPath); 
 | 
            String name=com.google.common.io.Files.getNameWithoutExtension(urlPath); 
 | 
            String fileName = DateUtils.datePath() + "/" + FileUploadUtils.encodingFilename(name) + "." + extension; 
 | 
            File file = FileUploadUtils.getAbsoluteFile(saveBathPath,fileName); 
 | 
            HttpResponse response = httpclient.execute(httpget); 
 | 
            HttpEntity entity = response.getEntity(); 
 | 
            InputStream in = entity.getContent(); 
 | 
            try { 
 | 
                FileOutputStream fout = new FileOutputStream(file); 
 | 
                int l = -1; 
 | 
                byte[] tmp = new byte[1024]; 
 | 
                while ((l = in.read(tmp)) != -1) { 
 | 
                    fout.write(tmp,0,l); 
 | 
                } 
 | 
                fout.flush(); 
 | 
                fout.close(); 
 | 
            } finally { 
 | 
                in.close(); 
 | 
            } 
 | 
            return FileUploadUtils.getPathFileName(saveBathPath,fileName); 
 | 
        }catch (Exception ex){ 
 | 
            ex.printStackTrace(); 
 | 
            return "error"; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |