Java URL下载图片无法打开问题
生活随笔
收集整理的這篇文章主要介紹了
Java URL下载图片无法打开问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? 最近在寫Java爬蟲,要爬取圖片,圖片下載工具類如下:
public class DownLoadUtils {/*** 下載圖片工具** @param urlString* 圖片鏈接地址* @param filename* 圖片的文件名字* @param savePath* 圖片保存的路徑* @throws Exception*/public static void download(String urlString, String filename, String savePath) throws Exception {// 構(gòu)造URLURL url = new URL(urlString);// 打開連接URLConnection con = url.openConnection();// 設(shè)置請求頭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");// 設(shè)置請求超時(shí)為5s//con.setConnectTimeout(5 * 1000);// 輸入流InputStream is = con.getInputStream();// 1K的數(shù)據(jù)緩沖byte[] bs = new byte[1024];// 讀取到的數(shù)據(jù)長度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);}// 完畢,關(guān)閉所有鏈接os.close();is.close();}/*** 截取真實(shí)文件名** @param fileName* @return*/public static String subFileName(String fileName) {// 查找最后一個(gè) \出現(xiàn)位置int index = fileName.lastIndexOf("\\");if (index == -1) {return fileName;}return fileName.substring(index + 1);}/*** 獲得隨機(jī)UUID文件名** @param fileName* @return*/public static String generateRandonFileName(String fileName) {// 獲得擴(kuò)展名String ext = fileName.substring(fileName.lastIndexOf("."));return UUID.randomUUID().toString().replace("-", "") + ext;} }下載下來的圖片和瀏覽器下載的大小一樣,說明沒有文件損壞,但是就是打不開。
最后發(fā)現(xiàn),URL下載的圖片是gzip格式,需要將后綴改為.zip然后解壓,里面的文件加上.jpg后綴就可以正常打開了。
如果想下載后就得到未壓縮的圖片則可以設(shè)置請求頭為
con.addRequestProperty("Accept-Encoding", "identity");如果無法解決,則在下載圖片的IO流處入手
// 輸入流InputStream is = con.getInputStream();GZIPInputStream gzips = new GZIPInputStream(is);總結(jié)
以上是生活随笔為你收集整理的Java URL下载图片无法打开问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中$用法
- 下一篇: 使用requests下载图片,存到图片文