このトピックでは、put 操作を呼び出してローカルファイルを Object Storage Service (OSS) にアップロードする方法について説明します。
権限
デフォルトでは、Alibaba Cloud アカウントは、アカウント内のリソースに対するフルアクセス権限を持っています。一方、RAM ユーザーと Alibaba Cloud アカウントに関連付けられた RAM ロールは、最初は権限を持っていません。 RAM ユーザーまたはロールを使用してリソースを管理するには、RAM ポリシーまたはバケットポリシーを使用して必要な権限を付与する必要があります。
API | アクション | 説明 |
PutObject |
| オブジェクトをアップロードする権限を付与します。 |
| オブジェクトのアップロード時に、x-oss-tagging ヘッダーを使用してオブジェクトのタグを指定します。 | |
| オブジェクトのアップロード時に、オブジェクトのメタデータに X-Oss-Server-Side-Encryption: KMS が含まれている場合は、両方の操作の権限が必要です。 | |
|
サンプルコード
次のコードは、examplefile.txt という名前のローカルファイルを examplebucket という名前のバケットにアップロードする例を示しています。アップロードされたファイルは、exampleobject.txt という名前のオブジェクトとして OSS に保存されます。
const OSS = require('ali-oss')
const path=require("path")
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,
authorizationV4: true,
// バケットの名前を指定します。
bucket: 'examplebucket',
});
// カスタムリクエストヘッダーを追加します。
const headers = {
// オブジェクトのストレージタイプを指定します。
'x-oss-storage-class': 'Standard',
// オブジェクトのアクセス制御リスト (ACL) を指定します。
'x-oss-object-acl': 'private',
// オブジェクトの URL を使用してオブジェクトにアクセスする場合、オブジェクトが添付ファイルとしてダウンロードされるように指定します。この例では、ダウンロードされたオブジェクトの名前は example.txt です。
'Content-Disposition': 'attachment; filename="example.txt"',
// オブジェクトのタグを指定します。オブジェクトに複数のタグを同時に指定できます。
'x-oss-tagging': 'Tag1=1&Tag2=2',
// PutObject 操作で、同じ名前のオブジェクトを上書きするかどうかを指定します。この例では、x-oss-forbid-overwrite パラメーターが true に設定されています。これは、同じ名前の既存のオブジェクトをアップロードされたオブジェクトで上書きできないことを指定します。
'x-oss-forbid-overwrite': 'true',
};
async function put () {
try {
// オブジェクトとローカルファイルの完全なパスを指定します。オブジェクトの完全なパスにはバケット名を含めないでください。
// ローカルファイルのパスが指定されていない場合、ローカルファイルはサンプルプログラムが属するプロジェクトのパスからアップロードされます。
const result = await client.put('exampleobject.txt', path.normalize('D:\\localpath\\examplefile.txt')
// カスタムヘッダーを指定します。
,{headers}
);
console.log(result);
} catch (e) {
console.log(e);
}
}
put();
よくある質問
オブジェクトのアップロード後に HTTP URL ではなく HTTPS URL が返されるようにするにはどうすればよいですか?
オブジェクトのアップロード後に HTTPS URL が返されるようにするには、secure パラメーターを true に設定する必要があります。詳細については、「パラメーター」をご参照ください。