java使用阿里云oss上传文件测试案例+上传策略包装类
产品文档地址:
https://help.aliyun.com/product/31815.html
产品购买地址:
https://www.aliyun.com/search?scene=all&k=oss
在官网首先购买产品,开通oss服务后进入控制台:
在https://developer.aliyun.com/ask/2061
查看相关的endpoint地址(找到自己所在的区域)
在控制台
https://oss.console.aliyun.com/overview
查找accesskey入口:
获得自己的accessKeyId和accessKeySecret
在控制台点击新建bucket,自己定义名字
进入自己项目导入依赖:
<dependency><groupId >com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.2.8</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>
新建一个单元测试:
private String endpoint ="https://oss-cn-beijing.aliyuncs.com";//(写自己endpoint对应的地址)private String accessKeyId="...";private String secretAccessKey="...";private String bucketName="...";@Testpublic void uploadByOss() throws FileNotFoundException {OSSClient ossClient = new OSSClient(endpoint,accessKeyId, secretAccessKey);InputStream inputStream = new FileInputStream("C:\\Users\\14172\\Pictures\\0.png");
//上传图片,第一个参数为bucketName,第二个参数key为上传的文件路径名称,第三个为InputStreamossClient.putObject(bucketName ,"upload/" +"aa.jpg", inputStream);Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
// 生成URL,第一个参数为bucketName,第二个参数key为上传的文件路径名称,第三个为过期时间URL url = ossClient.generatePresignedUrl(bucketName ,"upload/"+"aa.jpg" , expiration);System.out.println(url);}
点击运行后可以看到文件管理中多了一个文件夹,下面有自己上传的文件:
在程序运行后得到的url点击后会跳转到网页自动下载:
点击后可以看到自己刚刚上传的文件
也可以用一个类将oss上传包装起来:
@Service
public class OssUploadStrategyImpl extends AbstractUploadStrategyImpl {@Autowiredprivate OssConfigProperties ossConfigProperties;@Overridepublic Boolean exists(String filePath) {return getOssClient().doesObjectExist(ossConfigProperties.getBucketName(), filePath);}@Overridepublic void upload(String path, String fileName, InputStream inputStream) {getOssClient().putObject(ossConfigProperties.getBucketName(), path + fileName, inputStream);}@Overridepublic String getFileAccessUrl(String filePath) {return ossConfigProperties.getUrl() + filePath;}/*** 获取ossClient** @return {@link OSS} ossClient*/private OSS getOssClient() {return new OSSClientBuilder().build(ossConfigProperties.getEndpoint(), ossConfigProperties.getAccessKeyId(), ossConfigProperties.getAccessKeySecret());}}
在yml文件中写oss配置:
upload:mode: ossoss:url: https://OSS域名/endpoint: oss-cn-beijing-.aliyuncs.comaccessKeyId: ..accessKeySecret: ..bucketName: ..
获得配置文件的值:
@Data
@Configuration
@ConfigurationProperties(prefix = "upload.oss")
public class OssConfigProperties {/*** oss域名*/private String url;private String endpoint;/*** 访问密钥id*/private String accessKeyId;/*** 访问密钥密码*/private String accessKeySecret;private String bucketName;}
上传策略抽象类:
@Service
public abstract class AbstractUploadStrategyImpl {@Overridepublic String uploadFile(MultipartFile file, String path) {try {// 获取文件md5值String md5 = FileUtils.getMd5(file.getInputStream());// 获取文件扩展名String extName = FileUtils.getExtName(file.getOriginalFilename());// 重新生成文件名String fileName = md5 + extName;// 判断文件是否已经上传if (!exists(path + fileName)) {upload(path, fileName, file.getInputStream());}return getFileAccessUrl(path + fileName);} catch (Exception e) {e.printStackTrace();throw new BizException("文件上传失败");}}public abstract Boolean exists(String filePath);
}
java使用阿里云oss上传文件测试案例+上传策略包装类相关推荐
- django图片上传到oss_django 配置阿里云OSS存储media文件的例子
1. 安装django-aliyun-oss2-storage包 linux上用 pip install django-aliyun-oss2-storage 无报错,顺利安装 windows上报错: ...
- 微信头像下载并上传到阿里云OSS,PHP文件上传到阿里云OSS简单代码(OSS文件上传,微信头像下载,CURL下载文件,微信头像链接过期)
(就这么个小事,有多少公司多少项目没做到!!) 微信公众号项目,后端获取到授权用户的微信头像后,要自行下载保存,不下载的话,微信返回的头像链接会在一段时间后过期,无法访问! 下面是我写的两个简单实用方 ...
- 使用PicGo+阿里云OSS实现md文档图片上传
使用PicGo+阿里云OSS实现md文档图片上传 这次给大家带来的是PicG0+阿里云Oss+typora的图床环境搭建,帮助大家提高工作效率+写博客速度! 1.typora安装 给大家一个链接:ty ...
- 一文读懂什么是阿里云OSS,如何使用Java操作阿里云OSS?
一.什么是阿里云OSS OSS: Object Storage Service 对象存储服务是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供 ...
- Java使用阿里云OSS对象存储上传图片
示例说明 该案例是OSS Java SDK的示例程序,您可以修改endpoint.accessKeyId.accessKeySecret.bucketName后直接运行. 本示例中的并不包括OSS ...
- java整合阿里云OSS
java整合阿里云OSS 说明 一.OSS前期准备 (1)创建Bucket (2)创建RAM账号 创建用户 创建用户组 二.OSS对应API开发(java) 说明 更新时间:2021/1/7 16:3 ...
- Java中阿里云OSS文件上传工具类
阿里云OSS文件上传下载工具类 前言: 本质上就是获取配置文件信息,然后注入bean,调用sdk中提供的增删改方法: 为了避免同名文件会替换,用了hutool中唯一id生成+文件名做拼接 导入依赖:→ ...
- Java实现阿里云OSS上传文件
推荐:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.. 点击跳转到网站 1.准备工作:创建操作阿里云OSS许可证 阿里云官方文档 这里不再赘述,根据官方文档一步步的 ...
- JAVA通过阿里云OSS存储实现图片上传功能
一.前置准备 首先我们需要在阿里云注册账号,实名认证后开通OSS功能,点击进入OSS功能的管理平台 进入概览页面后,点击Bucket列表,创建一个Bucket(相当于一个存放文件的文件夹) 关键是要 ...
最新文章
- 在请求分页虚存管理系统中_请求分页式系统中,以页为单位管理用户的虚空间,以段为单位管理内存空间_学小易找答案...
- python教程第四版pdf下载-笨办法学python 第四版 中文pdf高清版
- leetcode —— 752. 打开转盘锁
- Redis 写磁盘出错 Cannot allocate memory
- JavaScript中的私有函数;Javascript构造函数的私有方法中访问其属性和公有方法
- 程序员面试金典——3.7猫狗收养所
- [转载]你是那个能和我同行一生的人吗?
- Jenkis maven构建项目实践
- pat A1052:Linked List Sorting静态链表+链表排序
- 一个学习PCI Express的 不错去处
- 2021年58个最佳个人WordPress博客主题
- window下解压tar.gz.part-*文件
- 深大uooc学术道德与学术规范教育第十章
- Teamspeak3集成要注意的问题
- mathtype向上取整函数
- 什么是JPA(Java persistence API)?
- 编写一个java类,用来表示出部队中 军 师 旅 团这种树状数据结构,使上级能检索到下级,下级也能检索到上级
- 【Ubuntu16.04】ROS · Kinetic安装 · 图文教程与问题详解
- 痛快 SpringBoot终于禁掉了循环依赖
- 邀请返现php怎么实现_PHP实现财务审核通过后返现金额到客户的功能
热门文章
- java isinterrupted_JAVA多线程之中断机制stop()、interrupted()、isInterrupted()
- win7系统安装信息服务器不可用怎么办,win7系统提示rpc服务器不可用怎么办
- pb 哪里找到系统图标_win10电脑桌面上“回收站”和“此电脑”图标不见了怎么办...
- jmeter展示内存cpu_基于Docker的jmeter弹性压测(2)监控
- vo生成MySQL表_跟我学微服务统一开发平台-代码生成器
- 深度学习和目标检测系列教程 15-300:在 Python 中使用 OpenCV 执行 YOLOv3 对象检测
- 期末复习、化学反应工程科目(第一章)
- 四十五、深入Java的网络编程(上篇)
- 二十八、Java中的Int和Integer的区别
- 股市永不过时的黄金铁律:零下金叉疯狂买,零上死叉立即卖