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

网友投稿 894 2023-01-20


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

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

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

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

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

具体代码如下:

//获取当前项目的绝对路径

public static String getTomcatPath(){

String nowpath;

String tempdir;

nowpath=SycBTYTstem.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 urlList=new ArrayList();

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 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();

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于post测试服务的信息
下一篇:如何实现接口抽象类(抽象类可以实现接口吗?)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~