使用Java通过URL下载图片到本地
2017-03-02 本文已影响0人
Slience无言
需求,公司项目接入融云,对于聊天中上传的图片融云会自动上传到七牛,但是只保留一个月,如果需要将图片长久的保留下来就需要自行下载图片了,前端同事说它可以给我那张图片的URL,类似于这种样子的
http://rongcloud-image.ronghub.com/image_jpeg__RC-2017-03-01_946_1488362231609?e=2147483647&token=EcrrKW5AbOMQaDRwc3ReDNvo3-sL_SO1fSUBKV3H:0VT5Cx7suD6uKNcuqVGsa84mq1M=
实现代码
public static String uploadQianURL(String fileUrl) {
//获取文件名,文件名实际上在URL中可以找到
String fileName = fileUrl.substring(fileUrl.lastIndexOf("/"), fileUrl.indexOf("?")) + ".jpg";
//这里服务器上要将此图保存的路径
String savePath = getRequest().getRealPath(UPLOAD_PATH);
try {
URL url = new URL(fileUrl);/*将网络资源地址传给,即赋值给url*/
/*此为联系获得网络资源的固定格式用法,以便后面的in变量获得url截取网络资源的输入流*/
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
DataInputStream in = new DataInputStream(connection.getInputStream());
/*此处也可用BufferedInputStream与BufferedOutputStream*/
DataOutputStream out = new DataOutputStream(new FileOutputStream(savePath+fileName));
/*将参数savePath,即将截取的图片的存储在本地地址赋值给out输出流所指定的地址*/
byte[] buffer = new byte[4096];
int count = 0;
/*将输入流以字节的形式读取并写入buffer中*/
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
}
out.close();/*后面三行为关闭输入输出流以及网络资源的固定格式*/
in.close();
connection.disconnect();
//返回内容是保存后的完整的URL
return PATH+UPLOAD_PATH+fileName;/*网络资源截取并存储本地成功返回true*/
} catch (Exception e) {
System.out.println(e + fileUrl + savePath);
return null;
}
}
如果URL路径是.jpg或者.png结尾的只需要在fileName那修改就好