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

2024-01-27 19:04

本文主要是介绍【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>

这篇关于【197】JAVA8调用阿里云对象存储API,保存图片并获取图片URL地址。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651205

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd