Aliyun Oss 上传文件
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 上传文件的更多相关文章
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- oss上传文件0字节
最近使用oss上传文件,不同项目中使用的版本也不同,之前的都能正常上传,最近因需要添加ObjectMetaData属性,扩展了一个方法,发现上传的文件始终是0字节的,最终跟源码发现conntentLe ...
- TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片
**TP5+阿里云OSS上传文件第三节,实现淘宝上传商品图片首先我们来看看淘宝的功能和样式:** 之后看看制作完成的演示:(由于全部功能弄成GIF有点大,限制上传大小好像在1M之内,压缩之后也有1.9 ...
- CentOS命令行向OSS上传文件或文件夹
下载地址:https://helpcdn.aliyun.com/document_detail/50452.html?spm=a2c4g.11186623.4.2.KyQak3 百度云盘:https: ...
- 阿里云OSS 上传文件SDK
Aliyun OSS SDK for C# 上传文件 另外:查找的其他实现C#上传文件功能例子: 1.WPF用流的方式上传/显示/下载图片文件(保存在数据库) (文末有案例下载链接) 2.WPF中利用 ...
- 使用阿里云OSS上传文件
本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...
- PHP SDK+Oss 上传文件流
// Endpoint以杭州为例,其它Region请按实际情况填写. $endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 云 ...
- OSS上传文件到阿里云
最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了, oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了. ...
- 阿里云OSS上传文件demo
1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...
随机推荐
- vim快捷键收藏版
总述 附加一篇介绍文哈,关于vim快捷键的介绍.vim和vscode 到底谁更好用,大家争得不可开交,然后我就在vscode里面装了一个vim插件,完美得解决了这个问题,用完之后觉得真香,所以我就整理 ...
- Maven三种打包方式jar war pom
1.pom工程 用在父级工程或聚合工程中.用来做jar包的版本控制.必须指明这个聚合工程的打包方式为pom 2.war工程 将会打包成war,发布在服务器上的工程.如网站或服务.在SpringBoot ...
- The 2019 Asia Nanchang First Round Online Programming Contest C. Hello 2019(动态dp)
题意:要找到一个字符串里面存在子序列9102 而不存在8102 输出最小修改次数 思路:对于单次询问 我们可以直接区间dpOn求出最小修改次数 但是对于多次询问 我在大部分题解看到的解释一般是用线段树 ...
- Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) D. XOR-gun (二进制,异或,前缀和)
题意:给你一组非递减的数,你可以对两个连续的数进行异或,使其合并为一个数,问最少操作多少次使得这组数不满足非递减. 题解:首先,给出的这组数是非递减的,我们考虑二进制,对于三个连续的非递减的最高位相同 ...
- Codeforces Round #648 (Div. 2) F. Swaps Again
题目链接:F.Swaps Again 题意: 有两个长度为n的数组a和数组b,可以选择k(1<=k<=n/2)交换某一个数组的前缀k和后缀k,可以交换任意次数,看最后是否能使两个数组相等 ...
- Codeforces Round #649 (Div. 2)
Codeforces Round #649 (Div. 2) -- WKL \(\mathcal{A}\)题: \(\mathrm{XXXXX}\) Greedy implementation *12 ...
- Java并发包源码学习系列:线程池ThreadPoolExecutor源码解析
目录 ThreadPoolExecutor概述 线程池解决的优点 线程池处理流程 创建线程池 重要常量及字段 线程池的五种状态及转换 ThreadPoolExecutor构造参数及参数意义 Work类 ...
- TCP 连接
面试题传送 TCP 报文格式 此处介绍建立或者断开TCP连接时,需要了解的TCP报文段首部字段含义: 序列号 seq:占4个字节(32位),用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上 ...
- Kubernetes安装EFK教程(非存储持久化方式部署)
1.简介 这里所指的EFK是指:ElasticSearch,Fluentd,Kibana ElasticSearch Elasticsearch是一个基于Apache Lucene的开源搜索和数据分析 ...
- VS2010下创建MVC4项目注意事项
1.安装VS SP1. 2.安装NuGet Package Manager. (1)打开VS2010,进入"工具--扩展管理器". (2)点击"联机库",等待搜 ...