【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地址。
实际工作中,需要用阿里云对象存储保存图片,并且在上传图片到阿里云对象存储服务器后,获取图片在阿里云对象存储服务器的URL地址,以便给 WEB 前端显示。 阿里云对象存储上传图片的工具类 package zhangchao;import com.aliyun.os…...
2024.1.24 C++QT 作业
思维导图 练习题 1.提示并输入一个字符串,统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 #include <iostream> #include <string.h> #include <array> using namespace std;int main() {string str;cout << "…...
jenkins部署过程记录
一、jenkins部署git链接找不到 原因分析: 机器的git环境不是个人git的权限,所以clone不了。Jenkins的master节点部署机器已经部署较多其他的job在跑,如果直接修改机器的git配置,很可能影响到其他的job clone 不了代码,…...
JS-策略设计模式
设计模式:针对特定问题提出的简洁优化的解决方案 一个问题有多种处理方案,而且处理方案随时可能增加或减少比如:商场满减活动 满50元减5元满100元减15元满200元减35元满500元减100元 // 满减金额计算函数 function count(money, type) {if …...
漏洞复现-EduSoho任意文件读取漏洞(附漏洞检测脚本)
免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…...
「QT」QString类的详细说明
✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「...
微信小程序-04
rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位。 import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束。 定义在 app.wxss 中的样式为全局样式,作用于每一个页面。 在页面的 .wxss 文…...
什么是数据库的三级模式两级映象?
三级模式两级映象结构图 概念 三级模式 内模式:也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有的内部记录类型、索引和文件组织方式,以及数据控制方面的细节。模式:又称概念…...
初识人工智能,一文读懂机器学习之逻辑回归知识文集(6)
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...
2024 CKA 题库 | 15、备份还原 etcd
不等更新题库 文章目录 15、备份还原 etcd题目:考点:参考链接:解答:备份快照恢复快照 检查 15、备份还原 etcd 题目: 设置配置环境 此项目无需更改配置环境。但是,在执行此项目之前,请确保您已返回初始节点。 [candidatemaster01] $ exit #…...
基于Matlab/Simulink直驱式风电储能制氢仿真模型
接着还是以直驱式风电为DG中的研究对象,上篇博客考虑的风电并网惯性的问题,这边博客主要讨论功率消纳的问题。 考虑到风速是随机变化的,导致风电输出功率的波动性和间歇性问题突出;随着其应用规模的不断扩大以及风电在电网中渗透率…...
计算机网络(第六版)复习提纲16
三 IP地址与MAC地址 1 IP层只能看到IP数据报 2 路由器只根据目的IP地址进行转发 3 局域网的链路层只能看到MAC帧 4 IP层抽象的互联网屏蔽了下层的复杂细节,在网络层讨论问题能够使用统一的、抽象的IP地址来研究主机和主机或路由间的通信 问题: 1 主机或路…...
【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题
记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题,包括连接超时,gradle无法读取等。 如果只看如何正确的配置,直接跳转第3节 配置汇总 1 连接超时 项目一开始会自动下载gardle文件来加载项目 1.1 Connect timed out 基…...
【Midjourney】内容展示风格关键词
1.几何排列(Geometric) "Geometric" 是一个与几何有关的词汇,通常用于描述与形状、结构或空间几何特征相关的事物。这个词可以涉及数学、艺术、工程、计算机图形学等多个领域。 使用该关键词后,图片中的内容会以平面图形拼接的方式展示&#…...
openssl3.2/test/certs - 056 - all DNS-like CNs allowed by CA1, no SANs
文章目录 openssl3.2/test/certs - 056 - all DNS-like CNs allowed by CA1, no SANs概述笔记END openssl3.2/test/certs - 056 - all DNS-like CNs allowed by CA1, no SANs 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\…...
mysql INSERT数据覆盖现有元素(若存在)
INSERT...ON DUPLICATE KEY UPDATE的使用 如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则会更新ON DUPLICATE KEY UPDATE关键字后面的字段值。 例如,如果列a被定义为UNIQUE࿰…...
攻防世界WEB新手训练区
view_source 此题我愿称之为网安领域的hello world 查看网页源代码的方式一般有—— 右键->查看网页源代码F12->源代码/来源Ctrlu 随后可以再代码第17行处找到flag,至此迈入网安第一步。可喜可贺,可喜可贺... get_post 考察http的两种请求方式&…...
Go语言安装及开发环境配置
目录 官网 国内 Linux(CentOS & Ubuntu)安装 环境变量设置 命令行下开发 开发模式执行 编译 IDE下开发 插件安装 安装依赖工具 运行 常见问题 1、dial tcp 172.217.160.113:443: i/o timeout 2、VS Code不能完美显示zsh问题 官网 访问Golang官网的下载链接&a…...
知识搜索术学习笔记
1 搜索引擎查询 1.1 推荐网站:Google 1.1.1 谷歌:对中英文支持都十分友好 中文搜索优于百度和Bing;...
【深度学习】sdxl中的 tokenizer tokenizer_2 区别
代码仓库: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图: 为什么有两个分词器 tokenizer 和 tokenizer_2? 在仔细阅读这些代码后,我们了解到 tokenizer_2 主要是用于 refiner 模型的。 #…...
别再让UI卡死了!WPF开发中Dispatcher.Invoke和BeginInvoke的保姆级避坑指南
别再让UI卡死了!WPF开发中Dispatcher.Invoke和BeginInvoke的保姆级避坑指南 当你在WPF应用中点击一个按钮后界面突然冻结,进度条卡在50%不再前进,鼠标变成旋转的沙漏——这种糟糕的用户体验往往源于错误的线程调度方式。作为C#开发者…...
【HFP】规范精讲[15]: HFP蓝牙特有AT命令:免提场景专属功能的控制语言
在蓝牙HFP的命令体系中,除了复用自传统移动通信标准的AT命令,还有一类专门为蓝牙免提场景设计的专属AT命令。这些命令就像为蓝牙免提设备量身定制的方言,针对无线音频传输、设备间状态同步、蓝牙特有功能等场景进行了精准优化,是实…...
华硕梅林固件下,让HP1020打印机在Linux网络环境中重获新生
1. 为什么HP1020打印机在Linux网络环境中会"罢工"? 每次看到那台尘封已久的HP LaserJet 1020打印机,我都觉得特别可惜。这台老伙计在Windows系统下表现一直很稳定,但当我尝试把它接入刷了梅林固件的华硕路由器时,却遇到…...
轻量级OpenClaw方案对比:nanobot与标准部署性能测试
轻量级OpenClaw方案对比:nanobot与标准部署性能测试 1. 测试背景与动机 最近在为一台闲置的2核4G云主机寻找合适的自动化方案时,我遇到了一个典型的技术选型问题:标准OpenClaw部署对资源要求较高,而新出现的nanobot方案号称是&q…...
【JavaEE】多线程 -- 初识线程
目录认识线程线程是什么为啥要有线程进程和线程的区别(重要)第一个多线程程序为什么先打印main再打印thread抛异常的小问题创建多线程的方式继承Thread, 重写run方法实现Runnable接口继承Thread, 使用匿名内部类实现Runnable接口, 使用匿名内部类lambda表达式(推荐写法)Thread类…...
CGAL::Point_set_3 成员函数自查表
参考来源: CGAL 6.1.1 - 3D Point Set: CGAL::Point_set_3< Point, Vector > Class Template Reference 一、基础构造 / 容量 返回值函数名作用小 demoPoint_set_3()构造空点集Point_set ps;size_tnumber_of_points()获取点数auto n ps.number_of_points(…...
STM32F103开发实录:当Clion的智能补全,遇上CubeMX+Keil5的稳定编译链
STM32F103开发实战:CLion智能编码与Keil5稳定编译的完美融合 第一次接触STM32开发时,我被Keil5那复古的界面和笨重的操作流程震惊了。作为一名习惯了现代IDE的开发者,我一直在寻找既能享受CLion智能编码体验,又能利用Keil5成熟编译…...
别再只用Billboard了!用Cesium Entity实现高性能动态告警点的3个优化技巧
突破性能瓶颈:Cesium Entity动态告警点的高阶优化实战 当三维场景中需要同时呈现数百个闪烁的告警点时,许多开发者会发现原本流畅的界面开始变得卡顿。这不是Cesium的局限性,而是我们可能还没有完全掌握其性能优化的精髓。本文将带您深入探索…...
用Python+WeChatOpenDevTools搞定微信小程序数据抓取:以‘六六找房’为例(附完整源码)
Python逆向解析微信小程序数据实战:以租房平台为例 微信小程序因其便捷性已成为许多服务的主要入口,但数据获取却常让开发者头疼。不同于传统网页爬虫,小程序的数据接口往往经过加密处理,常规请求难以直接获取有效信息。本文将分享…...
从零开始:Windows与Ubuntu20.04双系统安装全指南
1. 为什么需要双系统? 对于很多刚接触Linux的朋友来说,直接在物理机上安装Ubuntu可能会有点担心。毕竟Windows用习惯了,万一Ubuntu用不顺手怎么办?这时候双系统就是最好的解决方案。我自己的第一台开发机就是WindowsUbuntu双系统&…...
