Firebase 管理员通过 url 将文件上传到存储时:错误:ENOENT:没有这样的文件或目录

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

所以我正在尝试制作一个音乐应用程序,人们可以在那里上传音乐。首先,客户端获取文件并将其更改为对象 url,如下所示:

const track_src = URL.createObjectURL(track);
data.track_src = track_src;
await Req.post("/api/u/music/upload", data)

之后,服务器接收数据和对象url并将其上传到Firebase存储:

//track_src is the object url

await st.bucket(sid).upload(track_src, {
    gzip: true,
    metadata: {
      cacheControl: 'public, max-age=31536000',
    },
})

但是我收到错误消息:

错误:ENOENT:没有这样的文件或目录,stat 'E:\Server lob:http:\localhost:3000\91e53bb5-abf2-46b4-bd0c-268b242e93f3'

javascript node.js firebase google-cloud-platform google-cloud-storage
1个回答
2
投票

你想做的事情是不可能的。基本上有两种在存储中上传文件的方法,您必须:

  • 使用

    bucket().upload()
    方法上传,它接受本地文件的路径作为
    pathString
    参数
    ,因此您需要实际的文件,而不是 url。如果您将文件存储在本地,并且考虑到您共享的信息,那么这就是理想的选择,这可能是您的最佳选择。您可以查看这个answer以获取更多信息。

  • 使用

    bucket().file()
    在Storage中创建一个空文件,然后使用
    file.createWriteStream()
    方法获取可以写入文件内容的流。如果内存中有该文件,这可能是一个有效的解决方案。

我建议您查看此文档,了解为存储桶类提供的方法,以及此文档,了解为文件类提供的方法。

© www.soinside.com 2019 - 2024. All rights reserved.