Aliyun OSS

OSS 简介

阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。

OSS 基本概念

官方文档:点我传送

  • 存储空间(Bucket)
  • 对象(Object)
  • ObjectKey
  • Region(地域)
  • Endpoint(访问域名)
  • AccessKey(访问密钥)

OSS 功能概述

官方文档:点我传送

  • 创建存储空间
  • 上传文件
    • 简单上传: 包括流式上传和文件上传。最大不能超过5GB。
    • 表单上传: 最大不能超过5GB。
    • 追加上传: 最大不能超过5GB。
    • 断点续传上传: 支持并发、断点续传、自定义分片大小。大文件上传推荐使用断点续传。最大不能超过48.8TB。
    • 分片上传: 当文件较大时,可以使用分片上传,最大不能超过48.8TB。
  • 下载文件

OSS 使用

使用步骤:

创建存储空间Bucket

官方文档:点我传送

创建子目录

创建目录,更好的区分图片存放的位置。也可以直接放在创建的Bucket上。

Java编码

  • controller 层
/**
* 图片上传 Controller
*/
@RestController
@RequestMapping("/images")
public class ImagesController { @PostMapping("/upload")
public void upload(@RequestParam("imageString") String imageString) throws UnsupportedEncodingException {
String list = seafoodService.upload(imageString);
} }
  • Service层

interface Service

/**
* 上传图片 service接口
*/
public interface ISeafoodService { /**
* 图片上传
* @author Hosystem
* @create 2021-2-24
* @desc 图片上传
**/
String upload(String imageString) throws UnsupportedEncodingException;
}

ServiceImpl

/**
* 上传图片 service
*/
@Service
public class SeafoodServiceImpl implements ISeafoodService { /**
* 阿里云 OSS 配置抽取yml
*/
@Autowired
AliPayClientProperties aliPayClientProperties; /**
* 图片上传
* @author HYH
* @create 2021-2-24
* @desc 图片上传 将图片转换成base64编码然后传进来
*
* 参考文档:https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.2.10.e50c46a19Q1Q52
**/
@Override
public String upload(String imageString) {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(appProps.getAliOssClientProperties().getEndpoint(), appProps.getAliOssClientProperties().getAccessKeyId(), appProps.getAliOssClientProperties().getAccessKeySecret()); // 创建一个Base64 对象
Base64 base64 = new Base64(); // 将传进来的base64编码 进行解码
byte[] imageByte = base64.decode(imageString.toString()); // 创建字节流 将base64解码后进行字节流转换
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imageByte); // 上传路径 bucket目录名 + 图片的名称 使用UUID随机生成
// OSS管理控制台将所有文件名以正斜线(/)结尾的文件显示为文件夹;
// 如:abc/efg/123.jpg这个路径的文件,在OSS管理控制台上看起来就是123.jgp存放在abc文件夹下的efg子文件夹中。
// 若想上传到bucket 则 String url = UUID.randomUUID().toString() + "." + "jpg";
String url = appProps.getAliOssClientProperties().getDirectoryPath() + UUID.randomUUID().toString() + "." + "jpg"; // 文件元信息(Object Meta):包括HTTP header和自定义元信息
// 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
// 参考文档:https://help.aliyun.com/document_detail/84840.html
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setContentType("image/jpg"); // 上传文件
// 格式:ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
ossClient.putObject(appProps.getAliOssClientProperties().getBucketName(), url, byteArrayInputStream, objectMetadata); // 关闭OSSClient
ossClient.shutdown(); // 返回上传图片的OSS路径
return appProps.getAliOssClientProperties().getUrl() + url;
} }
  • yml配置抽取
@Data
@Component
@Accessors(chain = true)
@ConfigurationProperties(prefix = "aliOssClientProperties")
public class AliOssClientProperties { /**
* 阿里云OSS endpoint
*/
private String endpoint; /**
* 阿里云OSS AccessKey
*/
private String accessKeyId; /**
* 阿里云OSS AccessKeySecret
*/
private String accessKeySecret; /**
* 阿里云OSS bucketName
*/
private String bucketName; /**
* 阿里云OSS url
*/
private String url; /**
* 阿里云OSS directoryPath 目录路径
*/
private String directoryPath;
}
  • yml配置
  # http://<bucket>.<endpoint>/<yourfile>+<yourdirectoryPath>
aliOssClientProperties:
endpoint: oss-cn-shenzhen.aliyuncs.com
accessKeyId: #accessKey
accessKeySecret: #accessKeySecret
bucketName: #bucketName
url: https://<bucketName>.<endpoint>
directoryPath: images/

测试

这里我通过swagger进行测试,也可以通过postman进行测试,直接定义常量imageString 当作参数使用。

参考文档1:点我传送

参考文档2:点我传送

参考文档3:点我传送

Aliyun Oss 上传文件的更多相关文章

  1. 关于 tp5.0 阿里云 oss 上传文件操作

    tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题  应该是移动后的路劲(相对于服 ...

  2. oss上传文件0字节

    最近使用oss上传文件,不同项目中使用的版本也不同,之前的都能正常上传,最近因需要添加ObjectMetaData属性,扩展了一个方法,发现上传的文件始终是0字节的,最终跟源码发现conntentLe ...

  3. TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片

    **TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...

  4. CentOS命令行向OSS上传文件或文件夹

    下载地址:https://helpcdn.aliyun.com/document_detail/50452.html?spm=a2c4g.11186623.4.2.KyQak3 百度云盘:https: ...

  5. 阿里云OSS 上传文件SDK

    Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...

  6. 使用阿里云OSS上传文件

    本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...

  7. PHP SDK+Oss 上传文件流

    // Endpoint以杭州为例,其它Region请按实际情况填写. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 云 ...

  8. OSS上传文件到阿里云

    最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了, oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了. ...

  9. 阿里云OSS上传文件demo

    1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...

随机推荐

  1. Kwp2000协议的应用(程序原理篇)

    作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 总述     接上篇文章Kwp2000协议的应用(硬件原理使用篇),本篇针对kwp2000协议标准的服务ID详细介绍,以及针对程序实现 ...

  2. Codeforces Round #656 (Div. 3) C. Make It Good

    题目链接:https://codeforces.com/contest/1385/problem/C 题意 去除一个数组的最短前缀使得余下的数组每次从首或尾部取元素可以排为非减序. 题解一 当两个大数 ...

  3. Codeforces Round #603 C. Everyone is a Winner!

    题意:给你一个整数n,求所有n/k的值(k∈{1,2,3...,n,.......}). 题解:最简单的方法是用枚举1~sqrt(n),把除数和商放进set中,就能直接水过,但后来看其他人的题解了解到 ...

  4. 使用eclipse搭建第一个java web应用

    一. 首先是eclipse得下载,你要下载Eclipse IDE for Java EE这种类型的,我之前下载的Eclipse IDE for Enterprise Java Developers是官 ...

  5. Codeforces Round #641 (Div. 2) D. Orac and Medians (贪心)

    题意:有一个长度为\(n\)的数组,问能否通过多次使某个区间的所有元素变成这个区间的中位数,来使整个数组变成题目所给定的\(k\). 题解:首先这个\(k\)一定要在数组中存在,然后我们对中位数进行考 ...

  6. KVM Pass-through 上部署 MiniSMB HurricaneII

    KVM Pass-through 上部署 MiniSMB HurricaneII 免费网络测试,是一款专门用于测试无线控制器, 智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具 ...

  7. LEETCODE - 1181【前后拼接】

    class Solution { public: string gethead(string str){//获取头单词 string ret = ""; int strlen = ...

  8. L3-015. 球队“食物链”【DFS + 剪枝】

    L3-015. 球队"食物链" 时间限制 1000 ms 内存限制 262144 kB 代码长度限制 8000 B 判题程序 Standard 作者 李文新(北京大学) 某国的足球 ...

  9. ysoserial Commons Collections2反序列化研究

    Apache Commons Collections2反序列化研究 环境准备 JDK 1.7 Commons Collections 4.0 javassit 前置知识 PriorityQueue() ...

  10. Protocol Buffers All In One

    Protocol Buffers All In One Protocol Buffers - Google's data interchange format Protocol buffers are ...