View Source LibOss (lib_oss v0.1.4)
LibOss
LibOss是Elixir实现的一个阿里云oss的SDK,目前支持的功能有:
[ ] Object:
[ ] 基础操作:
- [x] 上传文件
- [x] 获取文件
- [x] 删除文件
- [x] 删除多个文件
- [x] 获取前端直传签名
- [x] 文件在bucket间拷贝
- [x] 追加写文件
- [x] 获取文件元信息
- [ ] 通过HTML表单上传的方式将文件
- [ ] 归档解冻
- [ ] 执行SQL语句
[x] 分片上传:
- [x] 分片上传发起
- [x] 分片上传完成
- [x] 分片上传取消
- [x] 分片上传列表
- [x] 列举指定uploadid已经成功上传的part
[x] 权限控制ACL
- [x] 设置文件ACL
- [x] 获取文件ACL
[x] 软连接
- [x] 创建软连接
- [x] 获取软连接
[x] 标签
- [x] 设置标签
- [x] 获取标签
- [x] 删除标签
[ ] Bucket:
[x] 基础操作:
- [x] 创建bucket
- [x] 删除bucket
- [x] 获取bucket中文件
- [x] 获取bucket中文件V2
- [x] 查看bucket的相关信息
- [x] 获取bucket存储容量以及文件(Object)数量
- [x] 查看bucket的位置信息
[ ] 接入点
- [ ] 创建接入点
- [ ] 删除接入点
- [ ] 获取接入点
- [ ] 列举接入点
- [ ] 配置接入点策略配置
- [ ] 获取接入点策略配置
- [ ] 删除接入点策略配置
[x] 权限控制
- [x] 设置bucket ACL
- [x] 获取bucket ACL
[ ] 生命周期
[ ] 传输加速
[ ] 版本控制
[ ] 数据复制
[ ] 授权策略
[ ] 清单
[ ] 日志管理
[ ] 静态网站
[ ] 防盗链
[ ] 标签
[ ] 加密
[ ] 请求者付费
[ ] 访问跟踪
[ ] 数据索引
[ ] 高防
[ ] 资源组
[ ] 自定义域名
[ ] 图片样式
[ ] 归档直读
[ ] LiveChannel
使用方法
Mix.install([
{:lib_oss, "~> 0.1"}
])
# 创建一个oss客户端
cli =
LibOss.new(
endpoint: "oss-cn-somewhere.aliyuncs.com",
access_key_id: "your access key id",
access_key_secret: "your access key secret"
)
# 在superivsor中启动
Supervisor.start_link(
[
{LibOss, client: cli}
],
strategy: :one_for_one
)
# 上传文件
{:ok, content} = File.read("./test.txt")
LibOss.put_object(cli, "hope-data", "/test/test.txt", content)
更多使用方法请参考API文档
Summary
Functions
AbortMultipartUpload接口用于取消MultipartUpload事件并删除对应的Part数据。
调用AppendObject接口用于以追加写的方式上传文件(Object)。
所有数据Part都上传完成后,您必须调用CompleteMultipartUpload接口来完成整个文件的分片上传。
调用CopyObject接口拷贝同一地域下相同或不同存储空间(Bucket)之间的文件(Object)。
调用DeleteBucket删除某个存储空间(Bucket)。
DeleteMultipleObjects接口用于删除同一个存储空间(Bucket)中的多个文件(Object)。
调用DeleteObject删除某个文件(Object)。
删除Object当前版本的标签信息。
GetBucket (ListObjects)接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
GetBucketAcl接口用于获取某个存储空间(Bucket)的访问权限(ACL)。
调用GetBucketInfo接口查看存储空间(Bucket)的相关信息。
GetBucketLocation接口用于查看存储空间(Bucket)的位置信息。
调用GetBucketStat接口获取指定存储空间(Bucket)的存储容量以及文件(Object)数量。
GetObject接口用于获取某个文件(Object)。此操作需要对此Object具有读权限。
调用GetObjectACL接口获取存储空间(Bucket)下某个文件(Object)的访问权限(ACL)。
调用GetObjectMeta接口获取一个文件(Object)的元数据信息,包括该Object的ETag、Size、LastModified信息,并且不返回该Object的内容。
调用GetObjectTagging接口获取对象(Object)的标签(Tagging)信息。
调用GetSymlink接口获取软链接。
function description 通过Web端直传文件(Object)到OSS的签名生成
HeadObject接口用于获取某个文件(Object)的元信息。使用此接口不会返回文件内容。
使用Multipart Upload模式传输数据前,您必须先调用InitiateMultipartUpload接口来通知OSS初始化一个Multipart Upload事件。
调用ListMultipartUploads接口列举所有执行中的Multipart Upload事件,即已经初始化但还未完成(Complete)或者还未中止(Abort)的Multipart Upload事件。
ListObjectsV2(GetBucketV2)接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
ListParts接口用于列举指定Upload ID所属的所有已经上传成功Part。
create a new oss client instance
调用PutBucket接口创建存储空间(Bucket)。
PutBucketAcl接口用于设置或修改存储空间(Bucket)的访问权限(ACL)。
调用PutObject接口上传文件(Object)。
调用PutObjectACL接口修改文件(Object)的访问权限(ACL)
调用PutObjectTagging接口设置或更新对象(Object)的标签(Tagging)信息。
调用PutSymlink接口用于为OSS的目标文件(TargetObject)创建软链接(Symlink)
初始化一个MultipartUpload后,调用UploadPart接口根据指定的Object名和uploadId来分块(Part)上传数据。
Types
@type t() :: %LibOss{ access_key_id: String.t(), access_key_secret: String.t(), endpoint: String.t(), http_impl: LibOss.Http.t(), name: atom() }
Functions
@spec abort_multipart_upload( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), String.t() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
AbortMultipartUpload接口用于取消MultipartUpload事件并删除对应的Part数据。
Doc: https://help.aliyun.com/document_detail/31996.html
Examples
{:ok, return_value} = function_name()
@spec append_object( client :: t(), bucket :: LibOss.Typespecs.bucket(), object :: LibOss.Typespecs.object(), since :: non_neg_integer(), data :: LibOss.Typespecs.body(), headers :: LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用AppendObject接口用于以追加写的方式上传文件(Object)。
Doc: https://help.aliyun.com/document_detail/31981.html
Examples
iex> LibOss.append_object(cli, bucket, "/test/test.txt", 0, "hello ")
iex> LibOss.append_object(cli, bucket, "/test/test.txt", 6, "world")
complete_multipart_upload(client, bucket, object, upload_id, parts, headers \\ [])
View Source@spec complete_multipart_upload( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), String.t(), [{non_neg_integer(), bitstring()}], LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
所有数据Part都上传完成后,您必须调用CompleteMultipartUpload接口来完成整个文件的分片上传。
Doc: https://help.aliyun.com/document_detail/31995.html
Examples
iex> {:ok, etag1} = upload_part(client, bucket, "test.txt", "upload_id", 1, part1)
iex> {:ok, etag2} = upload_part(client, bucket, "test.txt", "upload_id", 2, part2)
iex> {:ok, etag3} = upload_part(client, bucket, "test.txt", "upload_id", 3, part3)
iex> complete_multipart_upload(client, bucket, "test.txt", "upload_id", [{1, etag1}, {2, etag2}, {3, etag3}])
{:ok, _}
copy_object(client, bucket, object, source_bucket, source_object, headers \\ [])
View Source@spec copy_object( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用CopyObject接口拷贝同一地域下相同或不同存储空间(Bucket)之间的文件(Object)。
Doc: https://help.aliyun.com/document_detail/31979.html
Examples
LibOss.copy_object(cli, target_bucket, "object_copy.txt", source_bucket, "object.txt")
@spec delete_bucket(t(), LibOss.Typespecs.bucket()) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用DeleteBucket删除某个存储空间(Bucket)。
Doc: https://help.aliyun.com/document_detail/31973.html
Examples
{:ok, _} = LibOss.delete_bucket(cli, to-delete-bucket)
@spec delete_multiple_objects( t(), LibOss.Typespecs.bucket(), [LibOss.Typespecs.object()] ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
DeleteMultipleObjects接口用于删除同一个存储空间(Bucket)中的多个文件(Object)。
Doc: https://help.aliyun.com/document_detail/31983.html
Examples
LibOss.delete_multiple_objects(cli, bucket, ["/test/test_1.txt", "/test/test_2.txt"]])
@spec delete_object(t(), LibOss.Typespecs.bucket(), String.t()) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用DeleteObject删除某个文件(Object)。
Doc: https://help.aliyun.com/document_detail/31982.html
Examples
{:ok, _} = LibOss.delete_object(cli, bucket, "/test/test.txt")
@spec delete_object_tagging(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) :: {:ok, any()} | {:error, LibOss.Exception.t()}
删除Object当前版本的标签信息。
Doc: https://help.aliyun.com/document_detail/114879.html
Examples
iex> LibOss.delete_object_tagging(cli, bucket, "/test/test.txt")
@spec get_bucket(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.params()) :: {:ok, [any()]} | {:error, LibOss.Exception.t()}
GetBucket (ListObjects)接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
Doc: https://help.aliyun.com/document_detail/31965.html
其中query_params具体细节参考上面链接中请求参数
部分
Examples
iex> LibOss.get_bucket(cli, bucket, %{"prefix" => "test/test"})
{:ok, [
%{
"ETag" => ""A5D2B2E40EF7EBA1C788697D31C27A78-3"",
"Key" => "test/test.txt",
"LastModified" => "2023-07-09T14:41:08.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "409608",
"StorageClass" => "Standard",
"Type" => "Multipart"
},
%{
"ETag" => ""5EB63BBBE01EEED093CB22BB8F5ACDC3"",
"Key" => "test/test_1.txt",
"LastModified" => "2023-07-09T14:41:08.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "11",
"StorageClass" => "Standard",
"Type" => "Normal"
}
]}
@spec get_bucket_acl(t(), LibOss.Typespecs.bucket()) :: {:ok, LibOss.Typespecs.string_dict()} | {:error, LibOss.Exception.t()}
GetBucketAcl接口用于获取某个存储空间(Bucket)的访问权限(ACL)。
Doc: https://help.aliyun.com/document_detail/31966.html
Examples
iex> LibOss.get_bucket_acl(cli, bucket)
{:ok,
%{
"AccessControlList" => %{"Grant" => "public-read"},
"Owner" => %{"DisplayName" => "107412446268415", "ID" => "107412446264153"}
}}
@spec get_bucket_info(t(), LibOss.Typespecs.bucket()) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用GetBucketInfo接口查看存储空间(Bucket)的相关信息。
Doc: https://help.aliyun.com/document_detail/31968.html
Examples
iex> LibOss.get_bucket_info(cli, bucket)
{:ok,
%{
"Bucket" => %{
"AccessControlList" => %{"Grant" => "public-read"},
"AccessMonitor" => "Disabled",
"BucketPolicy" => %{"LogBucket" => nil, "LogPrefix" => nil},
"Comment" => nil,
"CreationDate" => "2022-08-02T14:59:56.000Z",
"CrossRegionReplication" => "Disabled",
"DataRedundancyType" => "LRS",
"ExtranetEndpoint" => "oss-cn-shenzhen.aliyuncs.com",
"IntranetEndpoint" => "oss-cn-shenzhen-internal.aliyuncs.com",
"Location" => "oss-cn-shenzhen",
"Name" => "xxxx-data",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"ResourceGroupId" => "rg-acfmv47nudzpp6i",
"ServerSideEncryptionRule" => %{"SSEAlgorithm" => "None"},
"StorageClass" => "Standard",
"TransferAcceleration" => "Enabled"
}
}}
@spec get_bucket_location(t(), LibOss.Typespecs.bucket()) :: {:ok, LibOss.Typespecs.bucket()} | {:error, LibOss.Exception.t()}
GetBucketLocation接口用于查看存储空间(Bucket)的位置信息。
Doc: https://help.aliyun.com/document_detail/31967.html
Examples
iex> LibOss.get_bucket_location(cli, bucket)
{:ok, "oss-cn-shenzhen"}
@spec get_bucket_stat(t(), LibOss.Typespecs.bucket()) :: {:ok, LibOss.Typespecs.string_dict()} | {:error, LibOss.Exception.t()}
调用GetBucketStat接口获取指定存储空间(Bucket)的存储容量以及文件(Object)数量。
Doc: https://help.aliyun.com/document_detail/426056.html
Examples
iex> LibOss.get_bucket_stat(cli, bucket)
{:ok, {:ok,
%{
"ArchiveObjectCount" => "0",
"ArchiveRealStorage" => "0",
"ArchiveStorage" => "0",
"ColdArchiveObjectCount" => "0",
"ColdArchiveRealStorage" => "0",
"ColdArchiveStorage" => "0",
"DeepColdArchiveObjectCount" => "0",
"DeepColdArchiveRealStorage" => "0",
"DeepColdArchiveStorage" => "0",
"DeleteMarkerCount" => "0",
"InfrequentAccessObjectCount" => "0",
"InfrequentAccessRealStorage" => "0",
"InfrequentAccessStorage" => "0",
"LastModifiedTime" => "1690118142",
"LiveChannelCount" => "0",
"MultipartPartCount" => "59",
"MultipartUploadCount" => "30",
"ObjectCount" => "5413",
"ReservedCapacityObjectCount" => "0",
"ReservedCapacityStorage" => "0",
"StandardObjectCount" => "5413",
"StandardStorage" => "9619258561",
"Storage" => "9619258561"
}}
@spec get_object( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, iodata()} | {:error, LibOss.Exception.t()}
GetObject接口用于获取某个文件(Object)。此操作需要对此Object具有读权限。
Doc: https://help.aliyun.com/document_detail/31980.html
req_headers的具体参数可参考文档中”请求头“部分说明
Examples
LibOss.get_object(cli, bucket, "/test/test.txt")
@spec get_object_acl(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) :: {:ok, LibOss.Typespecs.acl()} | {:error, LibOss.Exception.t()}
调用GetObjectACL接口获取存储空间(Bucket)下某个文件(Object)的访问权限(ACL)。
Doc: https://help.aliyun.com/document_detail/31987.html
Examples
iex> LibOss.get_object_acl(cli, bucket, "/test/test.txt")
{:ok, "public-read"}
@spec get_object_meta(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) :: {:ok, LibOss.Typespecs.string_dict()} | {:error, LibOss.Exception.t()}
调用GetObjectMeta接口获取一个文件(Object)的元数据信息,包括该Object的ETag、Size、LastModified信息,并且不返回该Object的内容。
Doc: https://help.aliyun.com/document_detail/31985.html
Examples
iex> LibOss.get_object_meta(cli, bucket, "/test/test.txt")
{:ok,
%{
"accept-ranges" => "bytes",
"connection" => "keep-alive",
"content-length" => "11",
"content-md5" => "XrY7u+Ae7tCTyyK7j1rNww==",
"content-type" => "text/plain",
"date" => "Tue, 18 Jul 2023 06:29:10 GMT",
"etag" => ""5EB63BBBE01EEED093CB22BB8F5ACDC3"",
"last-modified" => "Tue, 18 Jul 2023 06:27:33 GMT",
"server" => "AliyunOSS",
"x-oss-hash-crc64ecma" => "5981764153023615706",
"x-oss-object-type" => "Normal",
"x-oss-request-id" => "64B631365A8AEE32306C9D64",
"x-oss-server-time" => "2",
"x-oss-storage-class" => "Standard"
}}
@spec get_object_tagging(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) :: {:ok, [LibOss.Typespecs.string_dict()]} | {:error, LibOss.Exception.t()}
调用GetObjectTagging接口获取对象(Object)的标签(Tagging)信息。
Doc: https://help.aliyun.com/document_detail/114878.html
Examples
iex> LibOss.get_object_tagging(cli, bucket, "/test/test.txt")
{:ok,
[
%{"Key" => "key1", "Value" => "value1"},
%{"Key" => "key2", "Value" => "value2"}
]}
@spec get_symlink(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) :: {:ok, bitstring()} | {:error, LibOss.Exception.t()}
调用GetSymlink接口获取软链接。
Doc: https://help.aliyun.com/document_detail/45146.html
Examples
iex> LibOss.get_symlink(cli, bucket, "/test/test.txt")
{:ok, "/test/test_symlink.txt"}
get_token(cli, bucket, object, expire_sec \\ 3600, callback \\ "")
View Source@spec get_token( cli :: t(), bucket :: LibOss.Typespecs.bucket(), object :: LibOss.Typespecs.object(), expire_sec :: non_neg_integer(), callback :: String.t() ) :: {:ok, String.t()}
function description 通过Web端直传文件(Object)到OSS的签名生成
Doc: https://help.aliyun.com/document_detail/31926.html
Example
iex> LibOss.get_token(cli, bucket, "/test/test.txt")
{:ok, "{"accessid":"LTAI1k8kxWG8JpUF","callback":"=","dir":"/test/test.txt",".........ePNPyWQo="}"}
@spec head_object( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, LibOss.Typespecs.string_dict()} | {:error, LibOss.Exception.t()}
HeadObject接口用于获取某个文件(Object)的元信息。使用此接口不会返回文件内容。
Doc: https://help.aliyun.com/document_detail/31984.html
Examples
iex> LibOss.head_object(cli, bucket, "/test/test.txt")
{:ok,
%{
"accept-ranges" => "bytes",
"connection" => "keep-alive",
"content-length" => "11",
"content-md5" => "XrY7u+Ae7tCTyyK7j1rNww==",
"content-type" => "text/plain",
"date" => "Tue, 18 Jul 2023 06:27:36 GMT",
"etag" => ""5EB63BBBE01EEED093CB22BB8F5ACDC3"",
"last-modified" => "Tue, 18 Jul 2023 06:27:33 GMT",
"server" => "AliyunOSS",
"x-oss-hash-crc64ecma" => "5981764153023615706",
"x-oss-object-type" => "Normal",
"x-oss-request-id" => "64B630D8E0DCB93335001974",
"x-oss-server-time" => "1",
"x-oss-storage-class" => "Standard"
}}
@spec init_multi_upload( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, String.t()} | {:error, LibOss.Exception.t()}
使用Multipart Upload模式传输数据前,您必须先调用InitiateMultipartUpload接口来通知OSS初始化一个Multipart Upload事件。
Doc: https://help.aliyun.com/document_detail/31992.html
Examples
iex> init_multi_uploads(client, bucket, "test.txt")
{:ok, "upload_id"}
@spec list_multipart_uploads( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.params() ) :: {:ok, [LibOss.Typespecs.string_dict()]} | {:error, LibOss.Exception.t()}
调用ListMultipartUploads接口列举所有执行中的Multipart Upload事件,即已经初始化但还未完成(Complete)或者还未中止(Abort)的Multipart Upload事件。
Doc: https://help.aliyun.com/document_detail/31997.html
Examples
iex> list_multipart_uploads(client, bucket, %{"delimiter"=>"/", "max-uploads" => 10, "prefix"=>"test/"})
{:ok,
[
%{
"ETag" => ""1334928900AEB317206CC7EB950540EF-3"",
"Key" => "test/multi-test.txt",
"LastModified" => "2023-07-18T11:16:45.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "409608",
"StorageClass" => "Standard",
"Type" => "Multipart"
},
%{
"ETag" => ""5EB63BBBE01EEED093CB22BB8F5ACDC3"",
"Key" => "test/test.txt",
"LastModified" => "2023-07-18T11:19:19.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "11",
"StorageClass" => "Standard",
"Type" => "Normal"
}
]}
@spec list_object_v2(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.params()) :: {:ok, [any()]} | {:error, LibOss.Exception.t()}
ListObjectsV2(GetBucketV2)接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
Doc: https://help.aliyun.com/document_detail/187544.html
Examples
iex> LibOss.list_object_v2(cli, bucket, %{"prefix" => "test/test"})
{:ok,
[
%{
"ETag" => ""A5D2B2E40EF7EBA1C788697D31C27A78-3"",
"Key" => "test/test.txt",
"LastModified" => "2023-07-09T14:41:08.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "409608",
"StorageClass" => "Standard",
"Type" => "Multipart"
},
%{
"ETag" => ""5EB63BBBE01EEED093CB22BB8F5ACDC3"",
"Key" => "test/test_1.txt",
"LastModified" => "2023-07-09T14:41:08.000Z",
"Owner" => %{
"DisplayName" => "1074124462684153",
"ID" => "1074124462684153"
},
"Size" => "11",
"StorageClass" => "Standard",
"Type" => "Normal"
}
]}
list_parts(client, bucket, object, upload_id, query_params \\ %{})
View Source@spec list_parts( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), String.t(), LibOss.Typespecs.params() ) :: {:ok, LibOss.Typespecs.string_dict()} | {:error, LibOss.Exception.t()}
ListParts接口用于列举指定Upload ID所属的所有已经上传成功Part。
Doc: https://help.aliyun.com/document_detail/31998.html
Examples
{:ok, return_value} = function_name()
iex> LibOss.list_parts(cli, bucket, "test.txt", "upload_id")
{:ok,
%{
"ListPartsResult" => %{
"Bucket" => "hope-data",
"IsTruncated" => "false",
"Key" => "test/multi-test.txt",
"MaxParts" => "1000",
"NextPartNumberMarker" => "3",
"Part" => [
%{
"ETag" => ""3170FC594DACE56C506E0196B5DEA1D1"",
"HashCrc64ecma" => "10873275732915280589",
"LastModified" => "2023-07-19T02:58:16.000Z",
"PartNumber" => "1",
"Size" => "136536"
},
%{
"ETag" => ""5539D60A05FD504B8210A662D7D15C1E"",
"HashCrc64ecma" => "4592881501542342075",
"LastModified" => "2023-07-19T02:58:17.000Z",
"PartNumber" => "2",
"Size" => "136536"
},
%{
"ETag" => ""5C7D509F5744115EE3B2D55F4893FE3F"",
"HashCrc64ecma" => "9048307046109329978",
"LastModified" => "2023-07-19T02:58:17.000Z",
"PartNumber" => "3",
"Size" => "136536"
}
],
"PartNumberMarker" => "0",
"StorageClass" => "Standard",
"UploadId" => "39663F02E9384C87BFC9E9B0E8B1100E"
}
}}
@spec new(lib_oss_opts_t()) :: t()
create a new oss client instance
Params
:access_key_id
(String.t/0
) - Required. OSS access key id:access_key_secret
(String.t/0
) - Required. OSS access key secret:endpoint
(String.t/0
) - Required. OSS endpoint:http_impl
(term/0
) - HTTP client implementation ofLibOss.Http
The default value is%LibOss.Http.Default{name: LibOss.Http.Default}
.
Examples
LibOss.new(
endpoint: "oss-cn-hangzhou.aliyuncs.com",
access_key_id: "access_key_id",
access_key_secret: "access_key_secret"
)
put_bucket(client, bucket, storage_class \\ "Standard", data_redundancy_type \\ "LRS", headers \\ [])
View Source@spec put_bucket( t(), LibOss.Typespecs.bucket(), bitstring(), bitstring(), LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用PutBucket接口创建存储空间(Bucket)。
Doc: https://help.aliyun.com/document_detail/31959.html
Examples
{:ok, _} = LibOss.put_bucket(cli, your-new-bucket)
@spec put_bucket_acl(t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.acl()) :: {:ok, any()} | {:error, LibOss.Exception.t()}
PutBucketAcl接口用于设置或修改存储空间(Bucket)的访问权限(ACL)。
Doc: https://help.aliyun.com/document_detail/31960.html
Examples
iex> LibOss.put_bucket_acl(cli, bucket, "public-read")
@spec put_object( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.body(), LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用PutObject接口上传文件(Object)。
Doc: https://help.aliyun.com/document_detail/31978.html
Examples
LibOss.put_object(cli, bucket, "/test/test.txt", "hello world")
@spec put_object_acl( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.acl() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用PutObjectACL接口修改文件(Object)的访问权限(ACL)
Doc: https://help.aliyun.com/document_detail/31986.html
Examples
iex> LibOss.put_object_acl(cli, bucket, "/test/test.txt", "public-read")
@spec put_object_tagging( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.string_dict() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用PutObjectTagging接口设置或更新对象(Object)的标签(Tagging)信息。
Doc: https://help.aliyun.com/document_detail/114855.html
Examples
iex> LibOss.put_object_tagging(cli, bucket, "/test/test.txt", %{"key1" => "value1", "key2" => "value2"})
@spec put_symlink( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), LibOss.Typespecs.object(), LibOss.Typespecs.headers() ) :: {:ok, any()} | {:error, LibOss.Exception.t()}
调用PutSymlink接口用于为OSS的目标文件(TargetObject)创建软链接(Symlink)
Doc: https://help.aliyun.com/document_detail/45126.html
Examples
iex> LibOss.put_symlink(cli, bucket, "/test/test.txt", "/test/test_symlink.txt")
@spec upload_part( t(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object(), String.t(), non_neg_integer(), binary() ) :: {:ok, bitstring()} | {:error, LibOss.Exception.t()}
初始化一个MultipartUpload后,调用UploadPart接口根据指定的Object名和uploadId来分块(Part)上传数据。
Doc: https://help.aliyun.com/document_detail/31993.html
Examples
iex> upload_part(client, bucket, "test.txt", "upload_id", 1, "hello world")
{:ok, "etag"}