当前位置: 首页 > news >正文

【197】JAVA8调用阿里云对象存储API,保存图片并获取图片URL地址。

实际工作中,需要用阿里云对象存储保存图片,并且在上传图片到阿里云对象存储服务器后,获取图片在阿里云对象存储服务器的URL地址,以便给 WEB 前端显示。

阿里云对象存储上传图片的工具类

package zhangchao;import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
import java.util.UUID;/*** 阿里云对象存储工具类*/
public class OSSUtils {// OSS阿里云对象存储的AK和SKprivate static final String OSS_AK = "yourAK";private static final String OSS_SK = "yourSK";// OSS阿里云对象存储的Bucket名称private static final String OSS_BUCKET_NAME = "your-files";// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。private static final String OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com";/*** 上传图片并返回图片URL* @return 图片URL*/public static String uploadImage(String imageFilePath) {String result = null;// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(OSS_ENDPOINT, OSS_AK, OSS_SK);FileInputStream fis = null;try {// 创建存储空间。fis = new FileInputStream(imageFilePath);String uuid = UUID.randomUUID().toString().replaceAll("-", "");ossClient.putObject(OSS_BUCKET_NAME, uuid, fis);// 设置URL过期时间为10年 3600l * 1000 * 24 * 365 * 10Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000L *24L * 365L * 10L);URL url = ossClient.generatePresignedUrl(OSS_BUCKET_NAME, uuid, expiration);if (url != null) {result = url.toString();}} catch (OSSException oe) {StringBuilder sb = new StringBuilder();sb.append("Caught an OSSException, which means your request made it to OSS, ").append("but was rejected with an error response for some reason.");sb.append("Error Message:").append(oe.getErrorMessage());sb.append("Error Code:").append(oe.getErrorCode());sb.append("Request ID:").append(oe.getRequestId());sb.append("Host ID:").append(oe.getHostId());System.out.println(sb.toString());} catch (ClientException ce) {StringBuilder sb = new StringBuilder();sb.append("Caught an ClientException, which means the client encountered ").append("a serious internal problem while trying to communicate with OSS, ").append("such as not being able to access the network.");sb.append("Error Message:" + ce.getMessage());System.out.println(sb.toString());ce.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {if (null != fis) {fis.close();}} catch (IOException e) {e.printStackTrace();}if (ossClient != null) {ossClient.shutdown();}}return result;}
}

调用的 main 方法:

package zhangchao;public class Main {public static void main(String[] args) {String imgUrl = OSSUtils.uploadImage("E:\\ws\\zc\\Java8OSSImg\\src\\main\\resources\\q1.jpg");System.out.println(imgUrl);}
}

运行结果,这里显示了返回的图片 URL 地址:

https://your-files.oss-cn-hangzhou.aliyuncs.com/abc123?Expires=2021599742&OSSAccessKeyId=youAK&Signature=xxxxxx

这个地址没办法用浏览器直接看,需要写个HTML来测试一下。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><img src="https://your-files.oss-cn-hangzhou.aliyuncs.com/abc123?Expires=2021599742&OSSAccessKeyId=youAK&Signature=xxxxxx">
</body>
</html>
http://www.lryc.cn/news/289481.html

相关文章:

  • 2024.1.24 C++QT 作业
  • jenkins部署过程记录
  • JS-策略设计模式
  • 漏洞复现-EduSoho任意文件读取漏洞(附漏洞检测脚本)
  • 「QT」QString类的详细说明
  • 微信小程序-04
  • 什么是数据库的三级模式两级映象?
  • 初识人工智能,一文读懂机器学习之逻辑回归知识文集(6)
  • 2024 CKA 题库 | 15、备份还原 etcd
  • 基于Matlab/Simulink直驱式风电储能制氢仿真模型
  • 计算机网络(第六版)复习提纲16
  • 【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题
  • 【Midjourney】内容展示风格关键词
  • openssl3.2/test/certs - 056 - all DNS-like CNs allowed by CA1, no SANs
  • mysql INSERT数据覆盖现有元素(若存在)
  • 攻防世界WEB新手训练区
  • Go语言安装及开发环境配置
  • 知识搜索术学习笔记
  • 【深度学习】sdxl中的 tokenizer tokenizer_2 区别
  • 使用一个定时器(timer_fd)管理多个定时事件
  • C++:使用tinyXML生成矢量图svg
  • day34_js
  • AR 自回归模型
  • 51单片机ESP8266
  • php 源码加密保护 bease方案
  • FFMPEG解析ts流
  • Java基础-实现猜数字小游戏
  • 爬虫(一)
  • 【软件测试】学习笔记-Nginx 在系统架构中的作用
  • 鸿蒙开发【应用开发基础知识】