次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用してオブジェクトメタデータを設定する方法の例を示しています。他のプログラミング言語の OSS SDK を使用してオブジェクトメタデータを設定する方法の詳細については、「概要」をご参照ください。
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.common.utils.DateUtil;
import com.aliyun.oss.model.ObjectMetadata;
import java.io.ByteArrayInputStream;
public class Demo {
public static void main(String[] args) throws Exception {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されています。実際のエンドポイントを指定してください。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケット名を指定します。例: examplebucket。
String bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。フルパスにバケット名を含めないでください。例: testfolder/exampleobject.txt。
String objectName = "testfolder/exampleobject.txt";
String content = "Hello OSS";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// OSSClient インスタンスを作成します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// アップロードされたオブジェクトのメタデータを追加します。
ObjectMetadata meta = new ObjectMetadata();
String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
// MD5 検証を有効にします。MD5 検証が有効になっていると、OSS はアップロードされたオブジェクトの MD5 ハッシュを計算し、この MD5 ハッシュをリクエストで指定された MD5 ハッシュと比較します。2 つの値が異なる場合は、エラーが報告されます。
meta.setContentMD5(md5);
// アップロードするコンテンツのタイプを指定します。ブラウザは、オブジェクトのコンテンツタイプに基づいて、オブジェクトの読み取りに使用する形式とエンコードタイプを決定します。コンテンツタイプが指定されていない場合は、オブジェクト名の拡張子に基づいてコンテンツタイプが生成されます。拡張子がない場合は、デフォルト値 application/octet-stream がコンテンツタイプとして使用されます。
meta.setContentType("text/plain");
// コンテンツがダウンロードされるときのオブジェクトの名前を指定します。
meta.setContentDisposition("attachment; filename=\"DownloadFilename\"");
// アップロードするオブジェクトの長さを指定します。実際のオブジェクトの長さが指定された長さよりも長い場合、オブジェクトは切り詰められます。指定された長さのコンテンツのみがアップロードされます。実際のオブジェクトの長さが指定された長さよりも短い場合は、オブジェクトのすべてのコンテンツがアップロードされます。
meta.setContentLength(content.length());
// コンテンツがダウンロードされるときの Web ページのキャッシュ動作を指定します。
meta.setCacheControl("Download Action");
// UTC でのキャッシュの有効期限を指定します。
meta.setExpirationTime(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
// コンテンツがダウンロードされるときのコンテンツエンコード形式を指定します。
meta.setContentEncoding("gzip");
// HTTP ヘッダーを設定します。
meta.setHeader("yourHeader", "yourHeaderValue");
// オブジェクトをアップロードします。
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()), meta);
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ "such as not being able to access the network.");
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケットの名前を指定します。例: examplebucket。
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。フルパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options = array(
OssClient::OSS_HEADERS => array(
'Expires' => '2012-10-01 08:00:00',
'Content-Disposition' => 'attachment; filename="xxxxxx"',
'x-oss-meta-self-define-title' => 'user define meta info',
));
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// オブジェクトをアップロードするときに、オブジェクトメタデータを設定します。
$ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを oss-cn-hangzhou に設定します。
region: 'yourRegion',
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// バケットの名前を指定します。
bucket: 'examplebucket'
});
async function put() {
try {
let meta = { year: 2016, people: 'mary' };
let result = await client.put('object-name', path.normalize('D:\\localpath\\examplefile.txt'), meta);
console.log(result);
} catch (e) {
console.log(e);
}
}
put();
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマップするリージョンの ID を指定します。例: cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメータが必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# オブジェクトのフルパスを指定します。例: exampledir/exampleobject.txt。フルパスにバケット名を含めないでください。
object_name = 'exampledir/exampleobject.txt'
# アップロードする文字列を指定します。
content = '{"age": 1}'
# HTTP ヘッダーを設定します。たとえば、Content-Type ヘッダーを 'application/json; charset=utf-8' に設定します。
bucket.put_object(object_name, content, headers={'Content-Type': 'application/json; charset=utf-8'})
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// バケットの名前を指定します。
var bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。フルパスにバケット名を含めないでください。
var objectName = "exampleobject.txt";
// アップロードするローカルオブジェクトのフルパスを指定します。デフォルトでは、ローカルオブジェクトのフルパスを指定しない場合、ローカルオブジェクトはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
var localFilename = "D:\\localpath\\examplefile.txt";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメータを変更します。
var conf = new ClientConfiguration();
// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;
// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
using (var fs = File.Open(localFilename, FileMode.Open))
{
// オブジェクトのメタデータを作成します。オブジェクトの HTTP ヘッダーを設定できます。
var metadata = new ObjectMetadata()
{
// オブジェクトのコンテンツタイプを指定します。
ContentType = "text/html",
// UTC でのキャッシュの有効期限を指定します。
ExpirationTime = DateTime.Parse("2025-10-12T00:00:00.000Z"),
};
// アップロードするオブジェクトコンテンツの長さを指定します。実際のオブジェクトの長さが指定された長さよりも長い場合、オブジェクトは切り詰められます。指定された長さのコンテンツのみがアップロードされます。実際のオブジェクトの長さが指定された長さよりも短い場合は、オブジェクトのすべてのコンテンツがアップロードされます。
metadata.ContentLength = fs.Length;
// オブジェクトがダウンロードされるときの Web ページのキャッシュ動作を指定します。
metadata.CacheControl = "No-Cache";
// mykey1 を myval1 に設定します。
metadata.UserMetadata.Add("mykey1", "myval1");
// mykey2 を myval2 に設定します。
metadata.UserMetadata.Add("mykey2", "myval2");
var saveAsFilename = "Filetest123.txt";
var contentDisposition = string.Format("attachment;filename*=utf-8''{0}", HttpUtils.EncodeUri(saveAsFilename, "utf-8"));
// 必要なコンテンツがオブジェクトとして保存されるときのデフォルトのオブジェクト名を指定します。
metadata.ContentDisposition = contentDisposition;
// オブジェクトをアップロードし、オブジェクトメタデータを設定します。
client.PutObject(bucketName, objectName, fs, metadata);
Console.WriteLine("Put object succeeded");
// オブジェクトメタデータをクエリします。
var oldMeta = client.GetObjectMetadata(bucketName, objectName);
// 新しいオブジェクトメタデータを設定します。
var newMeta = new ObjectMetadata()
{
ContentType = "application/octet-stream",
ExpirationTime = DateTime.Parse("2035-11-11T00:00:00.000Z"),
// オブジェクトがダウンロードされるときのオブジェクトのコンテンツエンコード形式を指定します。
ContentEncoding = null,
CacheControl = ""
};
// ユーザーメタデータを設定します。
newMeta.UserMetadata.Add("author", "oss");
newMeta.UserMetadata.Add("flag", "my-flag");
newMeta.UserMetadata.Add("mykey2", "myval2-modified-value");
// ModifyObjectMeta メソッドを使用して、オブジェクトメタデータを変更します。
client.ModifyObjectMeta(bucketName, objectName, newMeta);
}
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}
// オブジェクトメタデータを同期的にクエリするリクエストを作成します。
// バケット名とオブジェクトのフルパスを指定します。この例では、バケット名は examplebucket で、オブジェクトのフルパスは exampledir/exampleobject.txt です。オブジェクトのフルパスにバケット名を含めないでください。
HeadObjectRequest head = new HeadObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// オブジェクトメタデータをクエリします。
OSSAsyncTask task = oss.asyncHeadObject(head, new OSSCompletedCallback<HeadObjectRequest, HeadObjectResult>() {
@Override
public void onSuccess(HeadObjectRequest request, HeadObjectResult result) {
// オブジェクトの長さを取得します。
Log.d("headObject", "object Size: " + result.getMetadata().getContentLength());
// オブジェクトのタイプをクエリします。
Log.d("headObject", "object Content Type: " + result.getMetadata().getContentType());
}
@Override
public void onFailure(HeadObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// リクエスト例外を処理します。
if (clientExcepion != null) {
// ネットワーク例外などのクライアント例外を処理します。
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// サービス例外を処理します。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
// task.waitUntilFinished(); // オブジェクトメタデータがクエリされるまで待ちます。
OSSHeadObjectRequest * request = [OSSHeadObjectRequest new];
// バケット名を指定します。例: examplebucket。
request.bucketName = @"examplebucket";
// オブジェクトのフルパスを指定します。フルパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。
request.objectKey = @"exampledir/exampleobject.txt";
OSSTask * headTask = [client headObject:request];
[headTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"head object success!");
OSSHeadObjectResult * result = task.result;
NSLog(@"header fields: %@", result.httpResponseHeaderFields);
for (NSString * key in result.objectMeta) {
NSLog(@"ObjectMeta: %@ - %@", key, [result.objectMeta objectForKey:key]);
}
} else {
NSLog(@"head object failed, error: %@" ,task.error);
}
return nil;
}];
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS へのアクセスに使用するアカウントに関する情報を初期化します。*/
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
std::string Region = "yourRegion";
/* バケットの名前を指定します。例: examplebucket。*/
std::string BucketName = "examplebucket";
/* オブジェクトのフルパスを指定します。オブジェクトのフルパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。*/
std::string ObjectName = "exampledir/exampleobject.txt";
/* ネットワークリソースなどのリソースを初期化します。*/
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* HTTP ヘッダーを設定します。*/
auto meta = ObjectMetaData();
meta.setContentType("text/plain");
meta.setCacheControl("max-age=3");
/* オブジェクトのユーザーメタデータを設定します。*/
meta.UserMetaData()["meta"] = "meta-value";
std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
*content << "Thank you for using Aliyun Object Storage Service!";
auto outcome = client.PutObject(BucketName, ObjectName, content, meta);
if (!outcome.isSuccess()) {
/* 例外を処理します。*/
std::cout << "PutObject fail" <<
",code:" << outcome.error().Code() <<
",message:" << outcome.error().Message() <<
",requestId:" << outcome.error().RequestId() << std::endl;
return -1;
}
/* ネットワークリソースなどのリソースを解放します。*/
ShutdownSdk();
return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。例: examplebucket。*/
const char *bucket_name = "examplebucket";
/* オブジェクトのフルパスを指定します。オブジェクトのフルパスにバケット名を含めないでください。例: exampledir/exampleobject.txt。*/
const char *object_name = "exampledir/exampleobject.txt";
const char *object_content= "hello world";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* char* 文字列を使用して aos_string_t を初期化します。*/
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。*/
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// 2 つの追加パラメータを指定します。
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* CNAME を使用するかどうかを指定します。値 0 は、CNAME が使用されていないことを示します。*/
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメータを指定します。*/
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。*/
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。 aos_pool_t は apr_pool_t と同等です。メモリプールを作成するために使用されるコードは、APR ライブラリに含まれています。*/
aos_pool_t *pool;
/* メモリプールを作成します。2 番目のパラメータの値は NULL です。この値は、プールが他のメモリプールを継承しないことを指定します。*/
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。このパラメータは、endpoint、access_key_id、access_key_secret、is_cname、curl などのグローバル設定情報を指定します。*/
oss_request_options_t *oss_client_options;
/* メモリプールのメモリリソースをオプションに割り当てます。*/
oss_client_options = oss_request_options_create(pool);
/* oss_client_options を初期化します。*/
init_options(oss_client_options);
/* パラメータを初期化します。*/
aos_string_t bucket;
aos_string_t object;
aos_table_t *headers;
aos_list_t buffer;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_buf_t *content = NULL;
char *content_length_str = NULL;
char *object_type = NULL;
char *object_author = NULL;
int64_t content_length = 0;
aos_str_set(&bucket, bucket_name);
aos_str_set(&object, object_name);
headers = aos_table_make(pool, 2);
/* ユーザーメタデータを設定します。*/
apr_table_set(headers, "Expires", "Fri, 28 Feb 2032 05:38:42 GMT");
apr_table_set(headers, "x-oss-meta-author", "oss");
aos_list_init(&buffer);
content = aos_buf_pack(oss_client_options->pool, object_content, strlen(object_content));
aos_list_add_tail(&content->node, &buffer);
/* キャッシュからオブジェクトをアップロードします。*/
resp_status = oss_put_object_from_buffer(oss_client_options, &bucket, &object,
&buffer, headers, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("put object from buffer with md5 succeeded\n");
} else {
printf("put object from buffer with md5 failed\n");
}
/* オブジェクトメタデータをクエリします。*/
resp_status = oss_get_object_meta(oss_client_options, &bucket, &object, &resp_headers);
if (aos_status_is_ok(resp_status)) {
content_length_str = (char*)apr_table_get(resp_headers, OSS_CONTENT_LENGTH);
if (content_length_str != NULL) {
content_length = atol(content_length_str);
}
object_author = (char*)apr_table_get(resp_headers, OSS_AUTHORIZATION);
object_type = (char*)apr_table_get(resp_headers, OSS_OBJECT_TYPE);
printf("get object meta succeeded, object author:%s, object type:%s, content_length:%ld\n", object_author, object_type, content_length);
} else {
printf("req:%s, get object meta failed\n", resp_status->req_id);
}
/* メモリプールを解放します。この操作により、リクエストに割り当てられたメモリリソースが解放されます。*/
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。*/
aos_http_io_deinitialize();
return 0;
}
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# 環境変数からアクセス認証情報を取得します。コードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_id: ENV['OSS_ACCESS_KEY_ID'],
access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# バケットの名前を指定します。例: examplebucket。
bucket = client.get_bucket('examplebucket')
# シンプルアップロード中にオブジェクトメタデータを設定します。
bucket.put_object(
'my-object-1',
:file => 'local-file',
:metas => {'year' => '2016', 'people' => 'mary'})
# 追加アップロード中にオブジェクトメタデータを設定します。
bucket.append_object(
'my-object-2', 0,
:file => 'local-file',
:metas => {'year' => '2016', 'people' => 'mary'})
# 再開可能なアップロード中にオブジェクトメタデータを設定します。
bucket.resumable_upload(
'my-object',
'local-file',
:metas => {'year' => '2016', 'people' => 'mary'})
package main
import (
"context"
"flag"
"log"
"strings"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// グローバル変数を定義します。
var (
region string // バケットが配置されているリージョン。
bucketName string // バケットの名前。
objectName string // オブジェクトの名前。
)
// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
func init() {
flag.StringVar(®ion, "region", "", "バケットが配置されているリージョン。")
flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
flag.StringVar(&objectName, "object", "", "オブジェクトの名前。")
}
func main() {
// コマンドラインパラメータを解析します。
flag.Parse()
// バケットの名前が指定されているかどうかを確認します。
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// リージョンが指定されているかどうかを確認します。
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// オブジェクトの名前が指定されているかどうかを確認します。
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// アップロードするコンテンツを指定します。
content := "hi oss"
// デフォルトの設定を読み込み、認証情報プロバイダとリージョンを指定します。
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// OSS クライアントを作成します。
client := oss.NewClient(cfg)
// オブジェクトをアップロードするリクエストを作成します。
request := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // バケットの名前。
Key: oss.Ptr(objectName), // オブジェクトの名前。
Body: strings.NewReader(content), // アップロードされるコンテンツ。
Expires: oss.Ptr(time.Date(2038, 12, 31, 12, 0, 0, 0, time.UTC).Format(time.RFC1123)), // オブジェクトの有効期限。
Acl: oss.ObjectACLPublicRead,
Metadata: map[string]string{ // カスタムメタデータ。
"Author": "alibaba oss sdk", // オブジェクトの作成者。
"Date": "2024-07-01", // オブジェクトの作成日。
},
}
// アップロードリクエストを実行します。
result, err := client.PutObject(context.TODO(), request)
if err != nil {
log.Fatalf("failed to put object %v", err)
}
// 結果をログに記録します。
log.Printf("put object result:%#v\n", result)
}