原文链接:https://blog.csdn.net/qypcyj/article/details/51348573
作者:qypcyj
将图片保存到本地:
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageRequest {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String path = "D:\\Download\\" + new SimpleDateFormat("yyyy-MM").format(new Date()) + "\\";
int i=2014213181;
for(;i<=2014213411;i++){
String str=Integer.toString(i);
//new一个URL对象
URL url = new URL("http://jwzx.cqupt.edu.cn/showstuPic.php?xh="+str);
//打开链接
InputStream inStream = url.openStream();
//得到图片的二进制数据,以二进制封装得到数据,具有通用性
byte[] data = readInputStream(inStream);
//将该图片上传至oss
try {
String filePath = "pkg_worlmap/img/ui/homepage/" + System.currentTimeMillis() + ".jpeg";
AliyunOSSUtil.uploadImgByByte(filePath, data);
String url = "https://xxx.oss-cn-beijing.aliyuncs.com/" + filePath;
return url;
} catch (Exception e) {
return "失败";
}
//new一个文件对象用来保存图片,默认保存当前工程根目录
File imageFile = new File("f:\\2014传媒\\"+str+".jpg");
if(!imageFile.exists()) {
imageFile.createNewFile();
}
//创建输出流
FileOutputStream outStream = new FileOutputStream(imageFile);
//写入数据
outStream.write(data);
System.out.println("正在保存:"+i+"的照片");
//关闭输出流
outStream.close();
}
System.out.println("保存结束");
}
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//创建一个Buffer字符串
byte[] buffer = new byte[1024];
//每次读取的字符串长度,如果为-1,代表全部读取完毕
int len = 0;
//使用一个输入流从buffer里把数据读取出来
while( (len=inStream.read(buffer)) != -1 ){
//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
outStream.write(buffer, 0, len);
}
//关闭输入流
inStream.close();
//把outStream里的数据写入内存
return outStream.toByteArray();
}
}
将获取的图片上传至阿里云oss:
AliyunOSSUtil :
package cn.zhishu.core.common.utils.alioss;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import lombok.extern.slf4j.Slf4j;
import java.io.ByteArrayInputStream;
@Slf4j
public class AliyunOSSUtil extends AliyunOssBase {
public static void uploadImgByBase64(String filePath,String base64) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(oss_endpoint, oss_accessKeyId, oss_accessKeySecret);
byte[] bytes = ImgCommonUtils.base64(base64);
// 上传网络流。
ossClient.putObject(oss_bucket, filePath, new ByteArrayInputStream(bytes));
// 关闭OSSClient。
ossClient.shutdown();
}
public static void uploadImgByByte(String filePath, byte[] bytes) {
// Endpoint以杭州为例,其它Region请按实际情况填写。
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(oss_endpoint, oss_accessKeyId, oss_accessKeySecret);
// 上传网络流。
ossClient.putObject(oss_bucket, filePath, new ByteArrayInputStream(bytes));
// 关闭OSSClient。
ossClient.shutdown();
}
}
AliyunOssBase:
package cn.zhishu.core.common.utils.alioss;
public class AliyunOssBase {
static String oss_endpoint_sts="sts.aliyuncs.com";//这里暂未用到
static String oss_endpoint="oss-cn-beijing.aliyuncs.com";
static String oss_accessKeyId="XXXXXXXX";
static String oss_accessKeySecret="XXXXXXXXXX";
static String oss_roleArn="XXXXXXXXX";//这里暂未用到
static String oss_bucket="桶名";
}