spring boot获取指定连接上的图片并保存到本地

原文链接: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="桶名";

}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值