我看到了将所有客户端库的文件上传到Supabase Storage的示例和手册,但没有关于普通HTTP协议(例如,使用curl
)的完整信息。
《Supabase Storage API参考手册》和《Supabase Storage API Swagger UI文档》都详细描述了API,但遗漏了一个重要细节:要使用的基本URL。
我看到了将所有客户端库的文件上传到Supabase Storage的示例和手册,但没有关于普通HTTP协议(例如,使用curl
)的完整信息。
《Supabase Storage API参考手册》和《Supabase Storage API Swagger UI文档》都详细描述了API,但遗漏了一个重要细节:要使用的基本URL。
1条答案
按热度按时间7fhtutme1#
您的需求:
1.您创建了一个存储桶。使用其名称代替下面的
{bucket}
。1.您为表
storage.objects
创建了一个RLS策略,该策略允许通过身份验证的用户使用INSERT。1.您手头有项目的引用ID。当托管在www.example.com上时supabase.com,这是用于所有API请求的URL的子域部分。用它来代替下面的
{ref}
。1.您拥有项目的匿名角色API密钥。使用它代替下面的
{anon-key}
。1.您的用户具有当前有效的JWT令牌。用它来代替下面的
{bearer-auth-token}
。1.您有一个想要上传的文件,其绝对路径为
/path/to/file.ext
。使用该绝对路径代替下面的{path-and-filename.ext}
,并使用文件名和扩展名代替下面的{filename.ext}
。现在,一个有效的上传命令看起来像这样:
备注:
storage/v1/
为前缀。这是我必须测试/逆向工程的部分。manual仍然提到apiv0/
,这是过时的,也错过了提到storage/
前缀。Swagger UI docs既没有提到storage/
也没有提到v1/
,但两者都是必需的。https://{ref}.supabase.co/storage/v1/object/{bucket}/{filename.ext}
中,您实际上可以将{filename.ext}
设置为您想要用于保存文件服务器端的任何文件名和扩展名。它不必与文件的本地文件名相同。您甚至可以包含任何您喜欢的路径。{"Key": "{bucket}/{filename.ext}"}
,其中包含您在请求URL中使用的值。这是识别上传的文件服务器端的关键,当你想下载,移动它等。{"statusCode": "409", "error": "Duplicate", "message": "The resource already exists"}
。