Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

ファイルのコピー

注: 1回の操作でコピーできるファイルは最大5GBまでです

copy APIを使用して、ストレージバケット内の既存ファイルを別のパスにコピーできます。

コピー操作を開始するユーザーは、コピーソースファイルに対して読み取り権限を持つ必要があります。

Future<void> copy() async {
try {
final result = await Amplify.Storage.copy(
source: const StoragePath.fromString('album/2024/1.jpg'),
destination: const StoragePath.fromString('shared/2024/1.jpg'),
).result;
safePrint('Copied file: ${result.copiedItem.path}');
} on StorageException catch (e) {
safePrint(e);
}
}

バケットを指定するか、バケット/リージョン間でコピーする

CopyBucketsオプションを指定することで、特定のバケットへのcopy操作を実行することもできます。 このオプションは、Amplify Backendで指定された名前から、またはコンソールのバケット名とリージョンから構築できる2つのStorageBucketパラメータを持つオブジェクトです。

final mainBucket = StorageBucket.fromOutputs(
'mainBucket',
);
final bucket2 = StorageBucket.fromBucketInfo(
BucketInfo(
bucketName: 'second-bucket-name-from-console',
region: 'us-east-2',
),
),
try {
final result = await Amplify.Storage.copy(
source: const StoragePath.fromString('album/2024/1.jpg'),
destination: const StoragePath.fromString('shared/2024/1.jpg'),
options: StorageCopyOptions(
buckets: CopyBuckets(
source: bucket1,
destination: bucket2,
),
),
).result;
safePrint('Copied file: ${result.copiedItem.path}');
} on StorageException catch (e) {
print('Error: $e');
}

デフォルト以外のバケットにコピーするか、そこからコピーするには、sourceおよび/またはdestinationパスがそのバケットに存在する必要があります

copyオプション

オプション説明
getPropertiesboolean操作完了後にAmplify.Storage.getProperties()を使用してコピーされたオブジェクトのプロパティを取得するかどうか。trueに設定すると、返されたアイテムにはメタデータやコンテンツタイプなどの追加情報が含まれます。
bucketsCopyBuckets2つのStorageBucketパラメータを受け入れるオブジェクト。同じバケットにコピーするには、targetBucketStorageBucketであるCopyBuckets.sameBucket(targetBucket)メソッドを使用します。追加のストレージバケットを設定するで詳細を確認してください

オプション付きcopyの例:

final result = Amplify.Storage.copy(
source: const StoragePath.fromString('album/2024/1.jpg'),
destination: const StoragePath.fromString('shared/2024/1.jpg'),
options: const StorageCopyOptions(
pluginOptions: S3CopyPluginOptions(
getProperties: true,
),
buckets: CopyBuckets.sameBucket(
StorageBucket.fromOutputs('secondBucket'),
),
),
);