Aliyun Oss 上传文件
2021-02-28 22:07
405 查看
目录
下载文件
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 56c .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("<y 56c ourBucketName>", "<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 accessKeyS 56c ecret: #accessKeySecret bucketName: #bucketName url: https://<bucketName>.<endpoint> directoryPath: images/
测试
这里我通过swagger进行测试,也可以通过postman进行测试,直接定义常量imageString 当作参数使用。
参考文档1:点我传送
参考文档2:点我传送
参考文档3:点我传送
相关文章推荐
- PHP单文件/多文件上传
- ADF文件导出和上传功能浅谈
- webwork实现文件上传的功能
- 文件和参数一起上传到服务器
- ASP.NET中常用的文件上传下载方法
- 基于javascript html5实现多文件上传
- 转:Loadrunner上传文件解决办法(大文件)
- php7 curl文件上传问题
- hadoop上传和下载文件
- http请求上传文件
- 分答项目_技能点:微信支付三个文件上传
- javaweb文件上传的九大问题
- servlet 3 文件上传
- tomcat的temp路径不存在, 导致上传文件失败
- jsp上传文件,隐藏file标签,使用span和text标签展示
- winform中通过FileStream实现将文件上传
- 笔记:ajax文件上传
- CshBBrainPP 上传文件html实例
- 文件拖拽上传
- spring-mvc的文件上传