diff --git a/src/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap b/src/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap index cd74396813c..09dd9b90559 100644 --- a/src/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap +++ b/src/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap @@ -1,3 +1,3 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Footer should render component that matches snapshot 1`] = `"
"`; +exports[`Footer should render component that matches snapshot 1`] = `"
"`; diff --git a/src/pages/[platform]/build-a-backend/storage/remove-files/index.mdx b/src/pages/[platform]/build-a-backend/storage/remove-files/index.mdx index fe726784d84..ed4ccc6c15c 100644 --- a/src/pages/[platform]/build-a-backend/storage/remove-files/index.mdx +++ b/src/pages/[platform]/build-a-backend/storage/remove-files/index.mdx @@ -33,6 +33,8 @@ Files can be removed from a storage bucket using the `remove` API. If a file is +## Remove a single file + You can also perform a remove operation from a specific bucket by providing the target bucket's assigned name from Amplify Backend in `bucket` option. ```javascript @@ -68,6 +70,103 @@ try { console.log('Error ', error); } ``` + + + + + +## Remove folders + +You can remove entire folders and their contents by providing a folder path. The remove API will automatically detect folders and perform batch deletion of all contained files. + +```javascript +import { remove } from 'aws-amplify/storage'; + +try { + const result = await remove({ + path: 'album/2024/', // Folder path ending with '/' + options: { + onProgress: (progress) => { + console.log(`Deleted: ${progress.deleted?.length || 0} files`); + console.log(`Failed: ${progress.failed?.length || 0} files`); + } + } + }); + console.log('Folder removed:', result.path); +} catch (error) { + console.log('Error ', error); +} +``` + +### Folder deletion with progress tracking + +For large folders, you can track the deletion progress and handle any failures: + +```javascript +import { remove } from 'aws-amplify/storage'; + +try { + const result = await remove({ + path: 'large-folder/', + options: { + onProgress: (progress) => { + // Track successful deletions + if (progress.deleted) { + progress.deleted.forEach(item => { + console.log(`Successfully deleted: ${item.path}`); + }); + } + + // Handle failed deletions + if (progress.failed) { + progress.failed.forEach(item => { + console.log(`Failed to delete: ${item.path} - ${item.message}`); + }); + } + } + } + }); + + console.log('Folder deletion completed:', result.path); +} catch (error) { + console.log('Error during folder deletion:', error); +} +``` + +### Cancellable folder deletion + +For long-running folder deletions, you can cancel the operation: + +```javascript +import { remove } from 'aws-amplify/storage'; + +const deleteOperation = remove({ + path: 'very-large-folder/', + options: { + onProgress: (progress) => { + console.log(`Progress: ${progress.deleted?.length || 0} deleted`); + } + } +}); + +// Cancel the operation if needed +setTimeout(() => { + deleteOperation.cancel(); + console.log('Deletion cancelled'); +}, 5000); + +try { + const result = await deleteOperation.result; + console.log('Folder removed:', result.path); +} catch (error) { + if (error.name === 'CanceledError') { + console.log('Operation was cancelled'); + } else { + console.log('Error:', error); + } +} +``` + @@ -410,10 +509,16 @@ Future remove() async { + + ## More `remove` options Option | Type | Default | Description | | -- | :--: | :--: | ----------- | | bucket | string \|
\{ bucketName: string;
region: string; \} | Default bucket and region from Amplify configuration | A string representing the target bucket's assigned name in Amplify Backend or an object specifying the bucket name and region from the console.

Read more at [Configure additional storage buckets](/[platform]/build-a-backend/storage/set-up-storage/#configure-additional-storage-buckets) | | expectedBucketOwner | string | Optional | The account ID that owns requested bucket. | +| onProgress | (progress: \{
deleted?: \{path: string\}[];
failed?: \{path: string; code: string; message: string\}[];
\}) => void | Optional | Callback function for tracking folder deletion progress. Called after each batch of files is processed during folder deletion operations. | + + +