說(shuō)明:通過(guò)公眾號(hào)URL獲取的內(nèi)容,文字可以正常顯示,但是圖片存在跨域訪問(wèn)的問(wèn)題,微信不允許跨域訪問(wèn)公眾號(hào)圖片,所以需要將公眾號(hào)圖片從存入本地后,再上傳至OSS,然后把HTML中的圖片全部替換為自己的OSS地址就可以了
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供川匯網(wǎng)站建設(shè)、川匯做網(wǎng)站、川匯網(wǎng)站設(shè)計(jì)、川匯網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、川匯企業(yè)網(wǎng)站模板建站服務(wù),10年川匯做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
這里就需要在后臺(tái)對(duì)HTML進(jìn)行DOM的解析,需要用的Jsoup
com.aliyun.oss aliyun-sdk-oss 2.2.3 org.jsoup jsoup 1.9.2
controller
package com.iueang.controller; import java.io.File; import java.util.HashMap; import java.util.Map; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.iueang.util.DownLoadImg; import com.iueang.util.GetBody; import com.iueang.util.OssUtil2; import com.iueang.util.UrlUtil; @Controller public class TestUrl { @RequestMapping("tohtml") public String tohtml() { return "html/index.html"; } @RequestMapping("getHtml") @ResponseBody public MapgetHtml(String url){ //獲取url文章生成文本 String html = UrlUtil.getAccess(url); String reg = "(.*?)"; String head=GetBody.getSubUtilSimple(html, reg); String HTTPHOST="http://yueang2.oss-cn-qingdao.aliyuncs.com/testimg/"; String newsBody=head; Document doc = Jsoup.parse(newsBody); Elements pngs = doc.select("img[data-src]"); System.out.println(pngs); for (Element element : pngs) { //獲取圖片地址 String imgUrl = element.attr("data-src"); //下載圖片到本地 String filename=DownLoadImg.downloadPicture(imgUrl); File file =new File("D:\\m2\\"+filename); //上傳至oss Boolean flag = OssUtil2.uploadFileToOss(file, "testimg/"+filename); if(flag) { file.delete(); } String newsrc =HTTPHOST + filename; element.attr("src", newsrc); } newsBody = doc.toString(); System.out.println(newsBody); Map map=new HashMap (); map.put("resultHtml", newsBody); return map; } }
util工具類
GetBody類
package com.iueang.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GetBody { public static String getSubUtilSimple(String html, String reg) { Pattern pattern = Pattern.compile(reg);// 匹配的模式 Matcher m = pattern.matcher(html); while(m.find()){ return m.group(1); } return ""; } }
OssUtil類
package com.iueang.util; import java.io.File; import java.util.HashMap; import java.util.Map; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.ObjectMetadata; public class OssUtil2 { //以下幾個(gè)參數(shù)值必填,參考文章最后文檔 static String endpoint = "http://oss-cn-qingdao.aliyuncs.com"; static String accessKeyId = "oss獲取"; static String accessKeySecert = "oss獲取"; static String bucketName = "yueang2"; /** * 上傳單個(gè)文件到OSS * @param file 要上傳的文件File對(duì)象 * @param objName 上傳后的文件名,包含文件夾,比如 game/game/test.txt * @return */ public static boolean uploadFileToOss(File file, String objName) { try { OSSClient ossClient = null; try { ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecert); }catch (Exception e){ e.printStackTrace(); } ObjectMetadata meta = new ObjectMetadata(); ossClient.putObject(bucketName, objName, file, meta); ossClient.shutdown(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } }
DownLoadImg類
package com.iueang.util; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.UUID; import sun.misc.BASE64Encoder; public class DownLoadImg { public static String downloadPicture(String urlList) { String filename="iueang"+UUID.randomUUID().toString()+".png"; String path="D:/m2/"+filename; URL url = null; try { url = new URL(urlList); DataInputStream dataInputStream = new DataInputStream(url.openStream()); FileOutputStream fileOutputStream = new FileOutputStream(new File(path)); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = dataInputStream.read(buffer)) > 0) { output.write(buffer, 0, length); } BASE64Encoder encoder = new BASE64Encoder(); String encode = encoder.encode(buffer); fileOutputStream.write(output.toByteArray()); dataInputStream.close(); fileOutputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Download返回的filname="+filename); return filename; } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。