用户自定义元信息
OSS支持用户自定义Object的元信息,对Object进行描述。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- String content = "Hello OSS";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- // 创建上传Object的Metadata
- ObjectMetadata meta = new ObjectMetadata();
- // 设置自定义元信息name的值为my-data
- meta.addUserMetadata("property", "property-value");
- // 上传文件
- ossClient.putObject("<yourBucketName>", "<yourKey>", new ByteArrayInputStream(content.getBytes()), meta);
- // 关闭client
- ossClient.shutdown();
提示:
- 在上面代码中,用户自定义了一个名称为“property”,值为“property-value”的元信息;
- 文件的元信息可以通过OSSClient.getObjectMetadata获取;
- 下载文件的时,文件的元信息也会同时下载;
- 一个文件可以有多个元信息,总大小不能超过8KB。
创建模拟文件夹
OSS是没有文件夹这个概念的,所有元素都是以Object来存储。创建模拟文件夹本质上来说是创建了一个size为0的Object。对于这个Object可以上传下载,只是控制台会对以”/“结尾的Object以文件夹的方式展示。
- // endpoint以杭州为例,其它region请按实际情况填写
- String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
- // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
- String accessKeyId = "<yourAccessKeyId>";
- String accessKeySecret = "<yourAccessKeySecret>";
- // 创建OSSClient实例
- OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
- final String keySuffixWithSlash = "parent_directory/";
- ossClient.putObject("<bucketName>", keySuffixWithSlash, new ByteArrayInputStream(new byte[0]));
- // 关闭client
- ossClient.shutdown();
提示:
- 创建模拟文件夹本质上来说是创建了一个名字以“/”结尾的文件;
- 对于这个文件照样可以上传下载,只是控制台会对以“/”结尾的文件以文件夹的方式展示;
- 多级目录创建最后一级即可,比如dir1/dir2/dir3/,创建dir1/dir2/dir3/即可,dir1/、dir1/dir2/不需要创建;
- 更多内容请参考 管理文件
追加上传
简单上传,分片上传,断点续传上传,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是OSS和普通文件系统使用的一个重大区别。正因为这种特性,在很多应用场景下会很不方便,典型比如视频监控、视频直播领域等,视频数据在实时的不断产生。
OSS提供了用户通过追加上传(Append Object)的方式在一个Object后面直接追加内容的功能。通过这种方式操作的Object的类型为Appendable Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。
您可以使用OSSClient.appendObject追加上传文件。
- AppendObjectResult appendObject(AppendObjectRequest appendObjectRequest)
AppendObjectRequest可设置参数如下:
AppendObjectResult的参数如下:
提示: