supabase 存储桶 getPublicUrl 返回不起作用的 url

问题描述 投票:0回答:1

我正在使用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);
      });

我不明白出了什么问题。我在存储桶策略中授予了所有权限,并尝试使用私有存储桶,但它也给出了相同的错误。

reactjs supabase bucket supabase-js
1个回答
0
投票

您似乎正在获取存储桶列表,而不是存储桶中的文件列表。您可以使用 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);
      });
© www.soinside.com 2019 - 2024. All rights reserved.