[テン魏:PPS33Aの整合性管理は] [] [継続的に更新]
説明:公共の数字によって取得されたURLの内容を、テキストは通常のことができますが、クロスドメインアクセスの問題の写真がありますが、マイクロチャネルの数は、クロスドメインアクセス公共イメージを許可していない、それがローカルに保存されているピクチャ番号から公開する必要があり、その後、OSSにアップロードその後、HTML内の画像は、その上にすべての彼らのOSSアドレスを交換します
ここでは、バックグラウンドでHTML DOM構文解析を行う必要がある、あなたはJsoupを使用する必要があります
<依存>
<groupIdを> com.aliyun.oss </ groupIdを>
<たartifactId> aliyun-SDK-OSS </たartifactId>
<バージョン> 2.2.3 </バージョン>
</依存関係>
<依存>
<groupIdを> org.jsoup </ groupIdを>
<たartifactId> jsoup </たartifactId>
<バージョン> 1.9.2 </バージョン>
</依存関係>
コントローラ
パッケージcom.iueang.controller。
インポートのjava.io.File;
輸入java.util.HashMapを;
輸入java.util.Map;
輸入org.jsoup.Jsoup;
輸入org.jsoup.nodes.Document;
輸入org.jsoup.nodes.Element;
輸入org.jsoup.select.Elements。
輸入org.springframework.stereotype.Controller;
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.ResponseBody。
輸入com.iueang.util.DownLoadImg;
輸入com.iueang.util.GetBody。
com.iueang.util.OssUtil2インポート;
com.iueang.util.UrlUtilインポート;
@コントローラ
パブリッククラスTestUrl {
@RequestMapping( "tohtml")
tohtmlパブリック文字列(){
リターン "のhtml / index.htmlを";
}
@RequestMapping( "getHtml")
@ResponseBody
公共の地図<文字列、文字列> getHtml(文字列のURL){
// URLがテキスト記事を生成し得ます
文字列HTML = UrlUtil.getAccess(URL);
文字列REG = "(。*?)<HTML> </ HTML>";
文字列ヘッド= GetBody.getSubUtilSimple(HTML、REG)。
文字列HTTPHOST = "http://yueang2.oss-cn-qingdao.aliyuncs.com/testimg/"。
文字列newsBody =ヘッド。
文書DOC = Jsoup.parse(newsBody)。
要素のPNG = doc.select( "IMG [データソース]")。
System.out.println(PNG画像)。
{(PNG画像要素の要素)のための
//画像のアドレスを取得します。
ストリングimgUrl = element.attr( "データSRC")。
//あなたのローカルにダウンロード写真
文字列filename = DownLoadImg.downloadPicture(imgUrl)。
ファイルファイル=新しいファイル( "D:\\平方メートル\\" +ファイル名);
// OSSにアップロード
ブールフラグ= OssUtil2.uploadFileToOss(ファイル、 "testimg /" +ファイル名);
IF(フラグ){
file.delete();
}
文字列NEWSRC = HTTPHOST +ファイル名。
element.attr( "SRC"、NEWSRC)。
}
newsBody = doc.toString()。
System.out.println(newsBody)。
地図<文字列、文字列>マップ=新しいHashMapの<文字列、文字列>();
map.put( "resultHtml"、newsBody)。
マップを返します。
}
}
ツールのutil
GetBodyクラス
パッケージcom.iueang.util;
輸入java.util.regex.Matcher;
輸入java.util.regex.Patternの;
パブリッククラスGetBody {
公共の静的な文字列getSubUtilSimple(文字列HTML、文字列REG){
パターンのパターン= Pattern.compile(REG); //マッチングパターン
M = pattern.matcher(HTML)と一致します。
一方、(m.find()){
戻りm.group(1)。
}
「」を返します。
}
}
OssUtilクラス
パッケージcom.iueang.util;
インポートのjava.io.File;
輸入java.util.HashMapを;
輸入java.util.Map;
輸入com.aliyun.oss.OSSClient;
輸入com.aliyun.oss.model.ObjectMetadata;
パブリッククラスOssUtil2 {
//以下のパラメータ値は、最終文書の参照記事を必要と
静的な文字列の終点=「http://oss-cn-qingdao.aliyuncs.com」。
静的な文字列accessKeyId = "OSS GET"。
静的な文字列accessKeySecert = "OSS GET"。
静的な文字列bucketNameは "yueang2を" =;
/ **
* OSSへの個々のファイルをアップロードします
アップロードに*ファイルのFileオブジェクトの@paramファイル
*ファイル名@param objNameにアップロードは、このようなゲーム/ゲーム/ test.txtのようにフォルダを、含まれています
* @return
* /
uploadFileToOss(ファイルのファイル、文字列objNameに){boolean型のpublic static
{試します
OSSClient ossClient = NULL;
{試します
ossClient =新しいOSSClient(エンドポイント、accessKeyId、accessKeySecert)。
}キャッチ(例外e){
e.printStackTrace();
}
ObjectMetadataメタ=新しいObjectMetadata();
ossClient.putObject(bucketName、objNameに、ファイル、メタ)。
ossClient.shutdown();
}キャッチ(例外e){
e.printStackTrace();
falseを返します。
}
trueを返します。
}
}
DownLoadImg类
パッケージcom.iueang.util;
輸入java.io.ByteArrayOutputStreamを;
インポートにjava.io.DataInputStream;
インポートのjava.io.File;
輸入java.io.FileOutputStreamは、
インポートにjava.io.IOException;
輸入java.net.MalformedURLException;
インポートのjava.net.URL;
輸入java.util.UUID;
輸入sun.misc.BASE64Encoder;
パブリッククラスDownLoadImg {
公共の静的な文字列downloadPicture(文字列urlList){
文字列のファイル名= "iueang" + UUID.randomUUID()のtoString()+ "PNG"。
ストリングパス= "D:/ 2 /" +ファイル名。
URL URL = NULL;
{試します
URL =新しいURL(urlList)。
DataInputStreamのDataInputStreamを=新しいのDataInputStream(url.openStream());
FileOutputStreamのFileOutputStream =新しいのFileOutputStream(新しいファイル(パス));
ByteArrayOutputStream出力=新しいByteArrayOutputStream();
バイト[] =新しいバイト[1024]バッファと
int型の長さ。
一方、((長さ= dataInputStream.read(バッファ))> 0){
output.write(バッファ、0、長さ)。
}
BASE64Encoderエンコーダ=新しいBASE64Encoder()。
ストリングエンコード= encoder.encode(バッファ)。
fileOutputStream.write(output.toByteArray())。
dataInputStream.close();
fileOutputStream.close();
}キャッチ(例外:MalformedURLException電子){
e.printStackTrace();
}キャッチ(IOExceptionを電子){
e.printStackTrace();
}
System.out.println( "ダウンロード返回