所以我正在尝试制作一个音乐应用程序,人们可以在那里上传音乐。首先,客户端获取文件并将其更改为对象 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'
你想做的事情是不可能的。基本上有两种在存储中上传文件的方法,您必须:
使用
bucket().upload()
方法上传,它接受本地文件的路径作为 pathString
参数,因此您需要实际的文件,而不是 url。如果您将文件存储在本地,并且考虑到您共享的信息,那么这就是理想的选择,这可能是您的最佳选择。您可以查看这个answer以获取更多信息。
使用
bucket().file()
在Storage中创建一个空文件,然后使用file.createWriteStream()
方法获取可以写入文件内容的流。如果内存中有该文件,这可能是一个有效的解决方案。