java根据图片路径下载到服务器方案 (转)

http://www.cnblogs.com/thinkingandworkinghard/articles/5589484.html

  平常做的工作中,有一部分是同步数据的。但是同步的过程中碰到个问题,是这样子的:我们的数据是从公司另一个部门的服务器上同步过来的,里面有图片,但是只有图片的路径。这样我们每次读取图片的时候,读取的是他们的服务器的图片,一旦他们的服务器出现问题,我们这边就会读取不到。同事提出了这个问题,并让我根据他们的图片地址在同步数据的时候,把图片也下载到我们的服务器上,这样读取的时候读取成我们自己的服务器上,于是上网先搜了下怎么根据图片路径保存到本地:参考http://takeme.iteye.com/blog/1683380

复制代码
import java.io.File;  
2.import java.io.FileOutputStream;  
3.import java.io.InputStream;  
4.import java.io.OutputStream;  
5.import java.net.URL;  
6.import java.net.URLConnection;  
7.  
8.  
9.public class DownloadImage {  
10.  
11.    /** 
12.     * @param args 
13.     * @throws Exception  
14.     */  
15.    public static void main(String[] args) throws Exception {  
16.        // TODO Auto-generated method stub  
17.         download("http://ui.51bi.com/opt/siteimg/images/fanbei0923/Mid_07.jpg", "51bi.gif","c:\image\");  
18.    }  
19.      
20.    public static void download(String urlString, String filename,String savePath) throws Exception {  
21.        // 构造URL  
22.        URL url = new URL(urlString);  
23.        // 打开连接  
24.        URLConnection con = url.openConnection();  
25.        //设置请求超时为5s  
26.        con.setConnectTimeout(5*1000);  
27.        // 输入流  
28.        InputStream is = con.getInputStream();  
29.      
30.        // 1K的数据缓冲  
31.        byte[] bs = new byte[1024];  
32.        // 读取到的数据长度  
33.        int len;  
34.        // 输出的文件流  
35.       File sf=new File(savePath);  
36.       if(!sf.exists()){  
37.           sf.mkdirs();  
38.       }  
39.       OutputStream os = new FileOutputStream(sf.getPath()+"\"+filename);  
40.        // 开始读取  
41.        while ((len = is.read(bs)) != -1) {  
42.          os.write(bs, 0, len);  
43.        }  
44.        // 完毕,关闭所有链接  
45.        os.close();  
46.        is.close();  
47.    }   
48.  
49.}  
复制代码
 

这样子确实可以下载到本地,为了防止跨平台,需要把里面的"\"或者"/"换成 File.separtor,原来我是想把同步工程的图片路径放在tomcat的跟目录下System.getProperty("user.dir"),但是同事提醒了下,说同步的项目不再tomcat里面,这样图片上传的路径没办法放到tomcat的共享目录了。最后再一想,既然这样,还不如让运营人员手工上传或者在另外一个项目里面给添加一个 功能,这样也不用我再同步的项目里面来写了。注意这样定了,明天去公司实现吧。

原文地址:https://www.cnblogs.com/quietwalk/p/6517729.html