from.update()

from.update()用于实现一个新文件替换指定路径下的现有文件。.

需要RLS策略权限:

  • buckets表的权限: 无
  • objects表的权限:updateselect权限

请参考存储指南中关于访问控制的工作方式。

对于使用 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 不是 BlobFileFormData,则应明确指定该值;否则,默认为 text/plain;charset=UTF-8

    • duplex[可选参数]
      string类型

      duplex 是一个可选的字符串参数,用于启用或禁用双工流,允许在同一流中读取和写入数据。它可以作为 fetch() 方法的选项进行传递。

      双工流(duplex streaming)是一种数据流传输模式,在该模式下,可以同时进行读取和写入操作,并且这些操作可以在同一个数据流中进行。

      duplex 参数被设置为启用时,可以在请求过程中不间断地读取和写入数据。这对于需要实时交互、传输大量数据或需要同时进行读写操作的情况非常有用。

    • upsert[可选参数]
      boolean类型

      当 upsert 设置为 true 时,如果文件已经存在,则覆盖该文件。当设置为 false 时,如果对象已经存在,则抛出错误。默认为 false。