我正在使用supabase js API 创建一个公共存储桶并将图像上传到其中。 到目前为止,这有效:
const { data: bucket, error } = await supabase.storage.createBucket(
bucketName,
{
public: true,
}
);
//// map an array of files
const { data, error } = await supabase.storage
.from(bucketName)
.upload(filename, file, {
cacheControl: "3600",
upsert: false,
});
我可以在supabase控制台中看到正确上传的文件,但无法在我的项目中显示它们。我得到了网址,但它没有显示,当我在导航器中直接输入该链接时,我收到“找不到对象”的错误
const { data, error } = await supabase.storage.listBuckets(
order.bucketId
);
let files = [];
data.map((file) => {
const { data, error } = supabase.storage
.from(order.bucketId)
.getPublicUrl(file.name);
files.push(data.publicUrl);
});
我不明白出了什么问题。我在存储桶策略中授予了所有权限,并尝试使用私有存储桶,但它也给出了相同的错误。
您似乎正在获取存储桶列表,而不是存储桶中的文件列表。您可以使用 list() 方法获取存储桶中的文件列表。
const { data, error } = await supabase.storage.from(order.bucketId).list('/path/to/your/files');
let files = [];
data.map((file) => {
const { data, error } = supabase.storage
.from(order.bucketId)
.getPublicUrl(file.name);
files.push(data.publicUrl);
});