复制对象
学习如何复制和移动对象
复制对象
您可以在不同存储桶之间或同一存储桶内复制对象。目前通过API只能复制最大5GB的对象。
当复制对象时,新对象的所有者将是发起复制操作的用户。
在同一存储桶内复制对象
要在同一存储桶内复制对象,使用copy
方法。
12345import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---await supabase.storage.from('avatars').copy('public/avatar1.png', 'private/avatar2.png')
跨存储桶复制对象
要跨存储桶复制对象,使用copy
方法并指定目标存储桶。
1234567import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---await supabase.storage.from('avatars').copy('public/avatar1.png', 'private/avatar2.png', { destinationBucket: 'avatars2',})
移动对象
您可以在不同存储桶之间或同一存储桶内移动对象。目前通过API只能移动最大5GB的对象。
当移动对象时,新对象的所有者将是发起移动操作的用户。对象移动后,原始对象将不再存在。
在同一存储桶内移动对象
要在同一存储桶内移动对象,可以使用move
方法。
1234567import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---const { data, error } = await supabase.storage .from('avatars') .move('public/avatar1.png', 'private/avatar2.png')
跨存储桶移动对象
要在不同存储桶之间移动对象,请使用 move
方法并指定目标存储桶。
1234567import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---await supabase.storage.from('avatars').move('public/avatar1.png', 'private/avatar2.png', { destinationBucket: 'avatars2',})
权限要求
用户要移动和复制对象,需要对源对象拥有 select
权限,对目标对象拥有 insert
权限。例如:
123456789101112131415create policy "用户可以选择自己的对象(在任何存储桶中)"on storage.objectsfor selectto authenticatedusing ( owner_id = (select auth.uid()));create policy "用户可以在自己的文件夹中上传(在任何存储桶中)"on storage.objectsfor insertto authenticatedwith check ( (storage.folder(name))[1] = (select auth.uid()));