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. HDU5739 Fantasia【点双连通分量 割点】

    HDU5739 Fantasia 题意: 给出一张\(N\)个点的无向图\(G\),每个点都有权值\(w_i\),要求计算\(\sum_{i=1}^{N}i\cdot G_i % 1e9+7\) 其中 ...

  2. 【hdu 1576】A/B(数论--拓展欧几里德 求逆元 模版题)

    题意:给出 A%9973 和 B,求(A/B)%9973的值. 解法:拓展欧几里德求逆元.由于同余的性质只有在 * 和 + 的情况下一直成立,我们要把 /B 转化为 *B-1,也就是求逆元. 对于 B ...

  3. rabbitMq学习一

    1.安装rabbitmq Windows下安装 首先,我们访问官网[https://www.rabbitmq.com/],点击Get Started. 选择下载安装,由于RabbitMQ使用Erlan ...

  4. 【POJ 1148】Utopia Divided

    Utopia Divided 题目链接:POJ 1148 题目大意 在一个坐标系中,一个点一开始在原点,然后被要求每次走到一个规定的象限内. 你有一些互不相同的数,每次你可以选每选过的两个,正负性可以 ...

  5. .Net Core 国际化

    创建项目什么的就不说了吧 直接进入正题吧 我这里建的是个webapi 添加资源文件 1.首先我们创建一个Language文件夹,这就是我们在后面Startup类中需要配置的目录名. 2.然后我们在La ...

  6. 【论文笔记】AutoML for MCA on Mobile Devices——论文解读与代码解析

    理论部分 方法介绍 本节将详细介绍AMC的算法流程.AMC旨在自动地找出每层的冗余参数. AMC训练一个强化学习的策略,对每个卷积层会给出其action(即压缩率),然后根据压缩率进行裁枝.裁枝后,A ...

  7. 【cpp上】课后正误小题

    State whether each of the following is true or false. If false, explain why. Assume the state ment u ...

  8. [Python] Pandas的delete、drop函数的用法

    目录 drop函数 Axis(轴)含义 drop用法实验 delete函数 drop函数 DataFrame.drop(labels=None, axis=0, index=None, columns ...

  9. Shpfile文件的字段类型说明

    Shpfile文件的字段类型设置如下表所示: 字段类型 字符 字段长度 长整型 N 9 短整型 N 4 浮点型 F 13 双精度 F 19 文本 C 50 特别需要注意的是字段长度,在导出SHP的时候 ...

  10. 在4.0框架下使用Sqlite数据库

    在4.0框架下使用Sqlite数据库出现"混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. ...