日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java URL下载图片无法打开问题

發布時間:2023/12/15 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java URL下载图片无法打开问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 最近在寫Java爬蟲,要爬取圖片,圖片下載工具類如下:

public class DownLoadUtils {/*** 下載圖片工具** @param urlString* 圖片鏈接地址* @param filename* 圖片的文件名字* @param savePath* 圖片保存的路徑* @throws Exception*/public static void download(String urlString, String filename, String savePath) throws Exception {// 構造URLURL url = new URL(urlString);// 打開連接URLConnection con = url.openConnection();// 設置請求頭con.addRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)");con.addRequestProperty("Accept-Encoding", "gzip");con.addRequestProperty("Referer","no-referrer");con.addRequestProperty("Content-Type","application/x-www-form-urlencoded");// 設置請求超時為5s//con.setConnectTimeout(5 * 1000);// 輸入流InputStream is = con.getInputStream();// 1K的數據緩沖byte[] bs = new byte[1024];// 讀取到的數據長度int len;// 輸出的文件流File sf = new File(savePath);if (!sf.exists()) {sf.mkdirs();}OutputStream os = new FileOutputStream(sf.getPath() + "\\" + filename);// 開始讀取while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完畢,關閉所有鏈接os.close();is.close();}/*** 截取真實文件名** @param fileName* @return*/public static String subFileName(String fileName) {// 查找最后一個 \出現位置int index = fileName.lastIndexOf("\\");if (index == -1) {return fileName;}return fileName.substring(index + 1);}/*** 獲得隨機UUID文件名** @param fileName* @return*/public static String generateRandonFileName(String fileName) {// 獲得擴展名String ext = fileName.substring(fileName.lastIndexOf("."));return UUID.randomUUID().toString().replace("-", "") + ext;} }

下載下來的圖片和瀏覽器下載的大小一樣,說明沒有文件損壞,但是就是打不開。

最后發現,URL下載的圖片是gzip格式,需要將后綴改為.zip然后解壓,里面的文件加上.jpg后綴就可以正常打開了。

如果想下載后就得到未壓縮的圖片則可以設置請求頭為

con.addRequestProperty("Accept-Encoding", "identity");

如果無法解決,則在下載圖片的IO流處入手

// 輸入流InputStream is = con.getInputStream();GZIPInputStream gzips = new GZIPInputStream(is);

總結

以上是生活随笔為你收集整理的Java URL下载图片无法打开问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。