1. 程式人生 > 實用技巧 >通過網路地址下載圖片示例

通過網路地址下載圖片示例

示例一:

package com.xieh;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class TestDownLoad {

    public static void main(String[] args) throws
Exception { URL url = new URL("https://pic.cnblogs.com/avatar/1862411/20200610010655.png"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStream fin = conn.getInputStream(); byte[] data = readInputStream(fin); File file = new File("D:" + File.separator + "1110.png"); FileOutputStream fos
= new FileOutputStream(file); fos.write(data); if (fos != null) { fos.close(); } if (fin != null) { fin.close(); } System.out.println("success"); } private static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); } }

示例二:

呼叫百度地圖根據經緯度截圖並儲存

download("http://api.map.baidu.com/staticimage?width=400&height=300&center="+project.getLongitude()+","+project.getLatitude()+"&zoom=11", businessId+".jpg",request.getSession().getServletContext().getRealPath("")+"/userfiles/assess/"+businessId+"/doc");

public static void download(String urlString, String filename, String savePath) throws Exception {
        // 構造URL
        URL url = new URL(urlString);
        // 開啟連線
        URLConnection con = url.openConnection();
        // 設定請求超時為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();
    }