tan*_*ius 5 rest curl file-upload supabase
我看到了所有客户端库将文件上传到Supabase Storage的示例和手册,但没有关于普通 HTTP 协议的完整信息(例如,使用curl
)。
Supabase Storage API 参考手册和Supabase Storage API Swagger UI 文档都详细描述了 API,但遗漏了一个重要细节:要使用的基本 URL。
您需要什么:
{bucket}
下面的名称。storage.objects
,允许对经过身份验证的用户进行 INSERT。{ref}
下面的内容。{anon-key}
下面的。{bearer-auth-token}
下面的内容。/path/to/file.ext
. 使用该绝对路径代替{path-and-filename.ext}
下面,并使用文件名和扩展名代替下面{filename.ext}
。现在,一个有效的上传命令将如下所示:
卷曲\ -X POST "https:// {ref} .supabase.co/storage/v1/object/ {bucket} / {filename.ext} " \ --data-binary "@ {路径和文件名.ext} " \ -H“apikey:{匿名密钥} ”\ -H“授权:承载{bearer-auth-token} ”
笔记:
URL 路径必须以storage/v1/
. 这是我必须测试/逆向工程的部分。该手册仍然提到apiv0/
,这已经过时了,并且也没有提到storage/
前缀。Swagger UI 文档既没有提到storage/
也没有提到v1/
,但两者都是必需的。
在请求 URL 中,https://{ref}.supabase.co/storage/v1/object/{bucket}/{filename.ext}
您实际上可以设置{filename.ext}
为任何带有扩展名的文件名,您希望使用该文件名在服务器端保存文件。它不必与文件的本地文件名相同。您甚至可以包含任何您喜欢的路径。
成功后,结果将是一个 JSON 对象{"Key": "{bucket}/{filename.ext}"}
,其中包含您在请求 URL 中使用的值。这是当您要下载、移动文件等时识别上传文件服务器端的关键。
由于路径和文件名是识别文件的关键,因此尝试将具有相同路径和文件名的文件上传到同一个存储桶中将会导致错误{"statusCode": "409", "error": "Duplicate", "message": "The resource already exists"}
。