from.update()
from.update()用于实现一个新文件替换指定路径下的现有文件。.
需要RLS策略权限:
buckets
表的权限: 无objects
表的权限:update
和select
权限
请参考存储指南中关于访问控制的工作方式。
对于使用 React Native 进行开发的情况,直接使用 Blob、File 或 FormData 对象来进行文件操作可能会无法达到预期的效果。 相反,建议使用来自 base64 文件数据的 ArrayBuffer 来更新文件。可以参考提供的示例代码来了解如何以此方式进行文件更新操作。
案例教程
案例1 (更新文件)#
1
2const avatarFile = event.target.files[0]
3const { data, error } = await supabase
4.storage
5.from('avatars')
6.update('public/avatar1.png', avatarFile, {
7 cacheControl: '3600',
8 upsert: true
9})
案例2 (使用ArrayBuffer从base64文件数据更新文件)#
1
2import {decode} from 'base64-arraybuffer'
3
4const { data, error } = await supabase
5.storage
6.from('avatars')
7.update('public/avatar1.png', decode('base64FileData'), {
8 contentType: 'image/png'
9})
参数说明
路径(path)[必要参数]
string类型
文件路径,包括文件名。应该采用folder/subfolder/filename.png的格式。在尝试上传之前,必须确保存储桶已经存在。
fileBody[必要参数]
object类型
要存储在桶中的文件的主体。
fileOptions[可选参数]
FileOptions类型
cacheControl[可选参数]
string类型
资源在浏览器和Supabase CDN中被缓存的秒数。这是在
Cache-Control: max-age=<seconds>
标头中设置的。默认为3600秒。contentType[可选参数]
string类型
Content-Type
头的值(header value),如果使用的fileBody
不是Blob
、File
或FormData
,则应明确指定该值;否则,默认为text/plain;charset=UTF-8
。duplex[可选参数]
string类型
duplex
是一个可选的字符串参数,用于启用或禁用双工流,允许在同一流中读取和写入数据。它可以作为fetch()
方法的选项进行传递。双工流(duplex streaming)是一种数据流传输模式,在该模式下,可以同时进行读取和写入操作,并且这些操作可以在同一个数据流中进行。
当
duplex
参数被设置为启用时,可以在请求过程中不间断地读取和写入数据。这对于需要实时交互、传输大量数据或需要同时进行读写操作的情况非常有用。upsert[可选参数]
boolean类型
当 upsert 设置为 true 时,如果文件已经存在,则覆盖该文件。当设置为 false 时,如果对象已经存在,则抛出错误。默认为 false。
特性