Need to configure your backend?See Build a Backend →
ファイルのコピー
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');}copyオプション
| オプション | 型 | 説明 |
|---|---|---|
| getProperties | boolean | 操作完了後にAmplify.Storage.getProperties()を使用してコピーされたオブジェクトのプロパティを取得するかどうか。trueに設定すると、返されたアイテムにはメタデータやコンテンツタイプなどの追加情報が含まれます。 |
| buckets | CopyBuckets | 2つのStorageBucketパラメータを受け入れるオブジェクト。同じバケットにコピーするには、targetBucketがStorageBucketである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'), ), ),);