java获取网络图片上传到OSS的方法

 更新时间:2018年10月23日 09:13:20   作者:李秀才  
这篇文章主要为大家详细介绍了java获取网络图片上传到OSS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

OSS不支持通过一个网络地址来上传图片,所以若想将网络上的图片上传到OSS上需要走点弯路。

1、通过链接将图片下载到本地的一个文件夹下面

2、用OSS上传该文件夹下的文件

3、上传完成后删除本地的文件

具体代码如下:

 //获取当前项目的绝对路径 
 public static String getTomcatPath(){ 
  String nowpath;   
  String tempdir; 
  nowpath=System.getProperty("user.dir"); 
  tempdir=nowpath.replace("bin", ""); //把bin 文件夹变到 webapps文件里面 
  return tempdir; 
 } 
 /**
 * 将图片下载下来后,上传到OSS
 * @param imgLink
 * @param downloadPath
 * @return
 * @throws Exception
 */
 private String downloadImagAndUploadToOss(String imgLink,String downloadPath) throws Exception{
  List<String> urlList=new ArrayList<String>();
  urlList.add(imgLink);
  String imgName=DateUtil.formatDate(new Date(), "yyyyMMddhhmmss")+UuidUtil.createUUID()+".jpg";
  downloadPicture(urlList,downloadPath,imgName);
 String key="carAlbum/"+imgName;
 String imgUrl=OSSObjectAPI.genOssPicUrl(OSSObjectAPI.XI_AN_BUCKET_NAME,OSSObjectAPI.XIAN_ACCESS_ID,OSSObjectAPI.XIAN_ACCESS_KEY,
  "http://oss-cn-zhangjiakou.aliyuncs.com/",downloadPath+imgName,key);
 FileUtil.delete(downloadPath+imgName);
 return imgUrl;
 } 
 /** 
  * 传入要下载的图片的url列表,将url所对应的图片下载到本地 
  * @param urlList 
  * @throws Exception 
  */ 
 private void downloadPicture(List<String> urlList,String path,String imgName) throws Exception { 
  if(urlList==null||urlList.size()==0){
   return;
  }
  URL url = null; 
  FileOutputStream fileOutputStream =null;
  InputStream inputStream =null;
  for (String urlString : urlList) { 
   try { 
     url = new URL(urlString);
     HttpURLConnection connection = (HttpURLConnection) url.openConnection();
     connection.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0");
     connection.setConnectTimeout(10 * 1000);
     connection.setReadTimeout(15 * 1000);
     inputStream = connection.getInputStream();
     byte[] buffer = new byte[1024];
     int length;
     fileOutputStream= new FileOutputStream(path+ File.separator+ imgName);
     while ((length = inputStream.read(buffer)) != -1) {
      fileOutputStream.write(buffer, 0, length);
     }
   } catch (Exception e) { 
    e.printStackTrace(); 
   } finally{
    inputStream.close();
    fileOutputStream.flush();
    fileOutputStream.close(); 
   }
  } 
 
 } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java基础将Bean属性值放入Map中的实例

    Java基础将Bean属性值放入Map中的实例

    这篇文章主要介绍了Java基础将Bean属性值放入Map中的实例的相关资料,需要的朋友可以参考下
    2017-07-07
  • Java爬取豆瓣电影数据的方法详解

    Java爬取豆瓣电影数据的方法详解

    这篇文章主要介绍了Java爬取豆瓣电影数据的方法,结合实例形式详细分析了Java爬取豆瓣电影数据相关原理、操作步骤、实现技巧与注意事项,需要的朋友可以参考下
    2020-04-04
  • SpringBoot解析JSON数据的三种方案

    SpringBoot解析JSON数据的三种方案

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,本文给大家介绍了SpringBoot解析JSON数据的三种方案,需要的朋友可以参考下
    2024-03-03
  • Java 将List中的实体类按照某个字段进行分组并存放至Map中操作

    Java 将List中的实体类按照某个字段进行分组并存放至Map中操作

    这篇文章主要介绍了Java 将List中的实体类按照某个字段进行分组并存放至Map中操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java设计模式之外观模式的实现方式

    Java设计模式之外观模式的实现方式

    这篇文章主要介绍了Java设计模式之外观模式的实现方式,外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性,需要的朋友可以参考下
    2023-11-11
  • SpringBoot登录、退出、获取用户信息的session处理方案

    SpringBoot登录、退出、获取用户信息的session处理方案

    这篇文章主要介绍了SpringBoot登录、退出、获取用户信息的session处理,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Java高级面试题小结

    Java高级面试题小结

    本文主要介绍了一些在Java面试过程中的一些高级面试题,包括对部分名词的释义及代码解析,具有一定收藏价值,需要的朋友可以参考下
    2017-09-09
  • SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表

    本文主要介绍了SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Mybatis-Plus如何配置分页对象

    Mybatis-Plus如何配置分页对象

    本文主要介绍了Mybatis-Plus如何配置分页对象,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • JWT Token实现方法及步骤详解

    JWT Token实现方法及步骤详解

    这篇文章主要介绍了JWT Token实现方法及步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论