写了个小站未解谜,在写文章的时候,需要将远程的图片本地化,采用的是JSOUP,通过修改图片节点信息,把远程图片下载到本地
public static String localImages(String html,String baseUrl) {
if (StringUtils.isBlank(html))
return html;
Document doc = Jsoup.parse(html);
Elements imgs = doc.select("img");
for (int i = 0; i < imgs.size(); i++) {
Element img = imgs.get(i);
String src = img.attr("src");
img.attr("src",downloadContentImg(src,baseUrl));
}
return doc.body().html();
}
/**
* 文章内容图片下载
* @param src
* @param baseUrl
* @return
*/
public static String downloadContentImg(String src,String baseUrl){
String url = UrlUtil.getUrl(baseUrl, src);
Date date = new Date();
String savePath = ServletActionContext.getServletContext().getRealPath("/") + SystemConfig.UPLOAD_IMAGE_DIR + new SimpleDateFormat("yyyy").format(date) + File.separator + new SimpleDateFormat("MMdd").format(date) + File.separator;
String saveUrl = ServletActionContext.getServletContext().getContextPath() + SystemConfig.UPLOAD_IMAGE_DIR + new SimpleDateFormat("yyyy").format(date) + "/" + new SimpleDateFormat("MMdd").format(date) + "/";
String fileExt = StringUtils.substringAfterLast(src, ".");
String filename = CommonUtil.getUUID()+"." + fileExt;
File file = new File(savePath+filename);
if(file.getParentFile().isDirectory()&&!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
try {
URL u = new URL(url);
FileUtils.copyURLToFile(u, file);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return saveUrl+filename;
}