from.upload()

from.upload()用于将一个文件上传到一个现有的桶。

需要RLS策略权限:

  • buckets表的权限: 无
  • objects表的权限:仅在上传新文件时需要插入insert权限,以及在更新文件时需要选择select插入insert更新updata权限

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

对于 React Native,使用 BlobFileFormData 并不能按预期工作。相反,应该使用来自 base64 文件数据的 ArrayBuffer 来上传文件,参见下面的示例。

案例教程

案例1 (上传文件)#

1const avatarFile = event.target.files[0]
2const { data, error } = await supabase
3.storage
4.from('avatars')
5.upload('public/avatar1.png', avatarFile, {
6  cacheControl: '3600',
7  upsert: false
8})

案例2 (使用来自 base64 文件数据的 ArrayBuffer 来上传文件)#

1const avatarFile = event.target.files[0]
2const { data, error } = await supabase
3.storage
4.from('avatars')
5.upload('public/avatar1.png', avatarFile, {
6  cacheControl: '3600',
7  upsert: false
8})

参数说明

  • 路径(path)[必要参数]
    string类型

    文件路径,包括文件名。应该采用folder/subfolder/filename.png的格式。在尝试上传之前,必须确保存储桶已经存在。

  • fileBody[必要参数]
    FileBody类型

    要存储在存储桶中的文件内容。

  • 文件选项(fileOptions)[可选参数]
    FileOptions类型

      特性
    • cacheControl[可选参数]
      string类型

      资源在浏览器和Supabase CDN中缓存的秒数。这是通过设置Cache-Control: max-age=<seconds>头来实现的。默认为3600秒。

    • contentType[可选参数]
      string类型

      Content-Type头的值。如果使用的是既不是BlobFile也不是FormDatafileBody,则应指定此值;否则,默认为text/plain;charset=UTF-8

    • duplex[可选参数]
      string类型

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

    • upsert[可选参数]
      boolean类型

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