多么美的一張圖啊
簡(jiǎn)述
想搞些好看的圖片下來(lái)航厚,用作寫(xiě)文章,工具還是選用jsoup锰蓬,簡(jiǎn)單易用幔睬,但發(fā)現(xiàn)個(gè)問(wèn)題,如下圖芹扭,有的圖片只下載一半麻顶,剛開(kāi)始以為下載姿勢(shì)不對(duì),后來(lái)發(fā)現(xiàn)是jsoup限制舱卡。解決
- 運(yùn)行下面代碼辅肾,輸出1048576,約1M轮锥,這個(gè)是jsoup默認(rèn)大小矫钓。
String url = "https://d3cbihxaqsuq0s.cloudfront.net/images/17935469_xl.jpg";
System.out.println(Jsoup.connect(url).request().maxBodySize());
- jsoup有帶個(gè)方法設(shè)置大小maxBodySize(3000000),可根據(jù)自己情況設(shè)置
Connection.Response execute = Jsoup.connect(url).ignoreContentType(true).maxBodySize(3000000).ignoreHttpErrors(true).execute();
byte[] bytes = execute.bodyAsBytes();
Map<String, String> headers = execute.headers();
System.out.println(headers.toString());
System.out.println(bytes.length);
IOUtils.write(bytes,new FileOutputStream("../photo/" + 1223 + ".jpg"));
- jsoup下載圖片有兩種方式交胚,bodyAsBytes()份汗,bodyStream(),文件比較大時(shí)選用后者蝴簇,因?yàn)橛袔Ь彺妗N募x寫(xiě)直接用的commons-io工具類
String url = "https://d3cbihxaqsuq0s.cloudfront.net/images/17935469_xl.jpg";
System.out.println(Jsoup.connect(url).request().maxBodySize());
Long start = System.currentTimeMillis();
byte[] bytes = Jsoup.connect(url).ignoreContentType(true).maxBodySize(3000000).ignoreHttpErrors(true).execute().bodyAsBytes();
IOUtils.write(bytes,new FileOutputStream("../photo/" + 1223 + ".jpg"));
System.out.println(System.currentTimeMillis()-start);
start = System.currentTimeMillis();
BufferedInputStream bufferedInputStream = Jsoup.connect(url).ignoreContentType(true).maxBodySize(3000000).ignoreHttpErrors(true).execute().bodyStream();
IOUtils.copyLarge(bufferedInputStream,new FileOutputStream("../photo/" + 12233 + ".jpg"));
System.out.println(System.currentTimeMillis()-start);
效果
great