Java
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo del.GetObjectRequestをインポートします。java.io. ファイルをインポートします。java.util.Dateをインポートします。public classデモ {
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。
文字列objectName = "testfolder/exampleobject.txt";
文字列pathName = "D :\\ localpath\\examplefile.txt";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
// たとえば、オブジェクトは2023年9月26日13:27:04に最後に変更されました。 指定された時刻が前回の変更時刻より前の場合 (9月25日火曜日13:27,04 CST 2023など) 、オブジェクトはIf-modified-Since条件を満たし、オブジェクトがダウンロードされます。
request.setModifiedSinceConstraint (新しい日付 (「9月25日火曜日13:27,04 CST 2023」));
// オブジェクトをローカルデバイスにダウンロードします。
ossClient.getObject(request, new File(pathName));
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
PHP
<?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';
}
OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数を指定していることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
$end point = "http://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。
$bucket= "<yourBucketName>";
// オブジェクト名を指定します。 オブジェクト名は、オブジェクトの完全なパスです。 オブジェクトのパスにバケット名を含めることはできません。 例: exampledir/exampleobject.txt。
$object = "<yourObjectName>";
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
$localfile = "<yourLocalFile>";
try {
$options = array(
OssClient::OSS_HEADERS => array(
// If-Modified-を設定する4月9日金曜日14:47:53 GMTで2021。
OssClient::OSS_IF_MODIFIED_SINCE => 「金曜日、2021年4月9日14:47:53 GMT」、
// If-Unmodified-を設定する14:47:53 10月13日水曜日、2021 GMTで。
OssClient::OSS_IF_UNMODIFIED_SINCE => 「10月13日金曜日2021: 47:53 GMT」、
// ETag値がリクエストで指定されたETag値と一致しないオブジェクトをダウンロードするように指定します。
OssClient::OSS_IF_NONE_MATCH => '"5B3C1A2E0563E1B002CC607C ****"' 、
// ETag値がリクエストで指定されたETag値と一致するオブジェクトをダウンロードするように指定します。
OssClient::OSS_IF_MATCH => '"fba9dede5f27731c9771645a3986 ****"' 、
OssClient::OSS_FILE_DOWNLOAD => $localfile
)
);
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$ossClient->getObject($bucket、$object、$options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage()) 。 "\n");
戻ります。}
Node.js
const OSS = require('ali-OSS ');
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: '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関数main() {
try {
// exampleobject.txtという名前のオブジェクトをアップロードします。
wait client.put("exampleobject.txt" 、Buffer.from("contenttest"));
// リクエストにIf-Modified-Sinceヘッダーを設定します。 このヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻より前の場合、オブジェクトがダウンロードされます。
let result = await client.get("exampleobject.txt", {
ヘッダー:{
"If-Modified-Since": new Date("1970-01-01").toGMTString(),
},
});
console.log(result.content.toString() === "contenttest");
console.log(result.res.status === 200);
// If-Modified-Sinceヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻と同じかそれ以降の場合、OSSはNot modified 304を返します。
result = await client.get("exampleobject.txt", {
ヘッダー:{
"If-Modified-Since": new Date().toGMTString(),
},
});
console.log(result.content.toString() === "");
console.log(result.res.status === 304);
} catch (e) {
console.log(e.code === "Not Modified");
}
}
メイン ();
Python
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 オブジェクトの命名規則の詳細については、「オブジェクトの命名規則」をご参照ください。
object_name = 'exampledir/exampleobject.txt'
headers = dict()
# リクエストで指定された時刻がオブジェクトの実際の変更時刻より前の場合、オブジェクトはダウンロードされます。 それ以外の場合、エラーコード「304 Not modified」が返されます。
headers['If-Modified-Since'] = 'Mon, 13 Dec 2021 14:47:53 GMT'
# リクエストで指定された時刻がオブジェクトの実際の変更時刻と同じかそれ以降の場合、オブジェクトはダウンロードされます。 それ以外の場合、Precondition failed 412エラーコードが返されます。
# headers['If-Unmodified-Since'] = 'Mon, 13 Dec 2021 14:47:53 GMT'
# リクエストで指定されたETag値がオブジェクトのETag値と一致する場合、オブジェクトがダウンロードされます。 それ以外の場合、エラーコード「412前提条件失敗」が返されます。
# headers['If-Match'] = 'DC21493F505BA3739562D8CC452C ****'
# リクエストで指定されたETag値がオブジェクトのETag値と一致しない場合、オブジェクトはダウンロードされます。 それ以外の場合、エラーコード「304 Not modified」が返されます。
# headers['If-None-Match'] = 'DC21493F505BA3739562D8CC452C ****'
object_stream = bucket.get_object(object_name, headers=headers)
プリント (object_stream.read())
Browser.js
<!DOCTYPE html>
<html lang="en">
<ヘッド>
<meta charset="UTF-8" />
<title> ドキュメント </title>
</head>
<body>
<button id='upload'> アップロード </button>
<button id='download'> ダウンロード </button>
<!-- SDKファイルのインポート->
<script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"></script>
<script type="text/javascript">
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: 'yourRegion' 、
// STSから取得した一時的なAccessKeyペアを指定します。 AccessKeyペアは、AccessKey IDとAccessKeyシークレットで構成されます。
accessKeyId: 'yourAccessKeyId' 、
accessKeySecret: 'yourAccessKeySecret' 、
// STSから取得したセキュリティトークンを指定します。
stsToken: 'yourSecurityToken' 、
// バケットの名前を指定します。 例: examplebucket.
bucket: "examplebucket" 、
});
const download = document.getElementById('download')
const upload = document.getElementById('upload')
// Upload the object.
upload.addEventListener('click', () => {
// アップロードするオブジェクトのコンテンツを指定します。
const file = new Blob(['examplectent'])
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.txt。
const fileName = 'exampledir/exampleobject.txt'
const result = client.put(fileName, file).then(r => console.log(r))
})
// Download the object.
addEventListener('click', () => {
// ダウンロードするオブジェクトのデータ範囲を指定します。
const start = 1, end = 5
client.get('exampledir/exampleobject.txt ', {
ヘッダー:{
// リクエストにIf-Modified-Sinceヘッダーを設定します。 このヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻より前の場合、オブジェクトがダウンロードされます。 // If-Modified-Sinceヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻と同じかそれ以降の場合、OSSはNot modified 304を返します。
"If-Modified-Since": new Date("1970-01-01").toGMTString()
// リクエストにIf-Unmodified-Sinceヘッダーを設定します。 このヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻と同じかそれ以降の場合、オブジェクトはダウンロードされます。 If-Unmodified-Sinceヘッダーの値が、アップロードされたオブジェクトが最後に変更された時刻よりも前の場合、OSSは412 Precondition Failedを返します。
// "If-Unmodified-Since": new Date(1970-01-01).toGMTString()
// If-MatchヘッダーをETag値に設定します。 指定されたETag値がオブジェクトのETagと一致する場合、オブジェクトがダウンロードされます。 指定されたETag値がオブジェクトのETagと一致しない場合、OSSは412 Precondition Failedを返します。
// "If-Match": '5B3C1A2E0563E1B002CC607C ****'
// If-MatchヘッダーをETag値に設定します。 指定されたETag値がオブジェクトのETagと一致しない場合、オブジェクトはダウンロードされます。 指定されたETag値がオブジェクトのETagと一致する場合、OSSは304 Not Modifiedを返します。
// "If-None-Match": '5B3C1A2E0563E1B002CC607C ****'
},
}).then(r => {
if (r.content.length > 0) {
const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
const link = document.createElement('a')
link.href = window.URL.createObjectURL(newBlob)
link.download = 'foo.txt'
link.click()
window.URL.revokeObjectURL(link.href)
} else {
console.log ('Error code', r.res.status)
console.log (「ダウンロード対象オブジェクトなし」)
}
})
})
</script>
</body>
</html>
Android
public void testGetObjectWithHeaders() が例外をスロー {
// オブジェクトのダウンロード要求を作成します。
// examplebucketなどのバケット名と、exampledir/exampleobject.txtなどのオブジェクトの完全パスを指定します。 フルパスにバケット名を含めることはできません。
GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");
request.setRequestHeaders(...);
OSSAsyncTask task = oss.asyncGetObject(request, getCallback);
task.waitUntilFinished();
GetObjectRequest rq = getCallback.request;
GetObjectResult result = getCallback.result;
}
Go
パッケージメイン
import (import (import)
"fmt"
"os"
"time",
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。
bucket, err := client.Bucket("yourBucketName")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// たとえば、オブジェクトは2023年11月21日18:43:02に最後に変更されました。 指定された時刻が最後に変更された時刻より前の場合、オブジェクトはIf-modified-Since条件を満たし、オブジェクトがダウンロードされます。
date := time.Date(2023, time.November, 21, 10, 40, 02, 0, time.UTC)
// 指定された条件を満たさないオブジェクトはダウンロードされません。
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
err = bucket.GetObjectToFile("yourObjectName", "LocalFile", oss.IfUnmodifiedSince(date))
if err == nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 指定された条件を満たす場合、オブジェクトがダウンロードされます。
err = bucket.GetObjectToFile("yourObjectName", "LocalFile", oss.IfModifiedSince(date))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
iOS
OSSGetObjectRequest * get = [OSSGetObjectRequest new];
// バケット名を指定します。 バケットの命名規則の詳細については、「バケットの命名規則」をご参照ください。
get.bucketName = @ "examplebucket";
// オブジェクトのフルパスを指定します。 パスにバケット名を含めることはできません。 オブジェクトの命名規則の詳細については、「オブジェクトの命名規則」をご参照ください。
get.objectKey = @ "exampledir/exampleobject.txt";
NSMutableDictionary * headerFields = [NSMutableDictionary];
// GMTで10月13日金曜日2021日14:47:53以降に変更されたオブジェクトをダウンロードするように指定します。
[headerFields setValue:@ "Fri, 13 Oct 2021 14:47:53 GMT" forKey:@ "If-Modified-Since"];
// 現在の時刻またはそれ以前に変更されたオブジェクトがダウンロードされることを指定します。
[headerFields setValue:[[NSDate new] oss_asStringValue] forKey:@ "If-Unmodified-Since"];
// ETag値がリクエストで指定されたETag値と一致しないオブジェクトをダウンロードするように指定します。
[headerFields setValue:@ "5B3C1A2E0563E1B002CC607C ****" forKey:@ "If-None-Match"];
// ETag値がリクエストで指定されたETag値と一致するオブジェクトをダウンロードするように指定します。
[headerFields setValue:@ "fba9dede5f27731c9771645a3986 ****" forKey:@ "If-Match"];
get.headerFields = headerFields;
[[[_client getObject:get] continueWithBlock:^ id _Nullable(OSSTask * _Nonnullタスク)) {
if (!task.error) {
NSLog(@ "get object success!");
} else {
NSLog(@ "get object error: % @" 、task.error);
}
nilを返します。}] waitUntilFinished];