res.sendFile( "path" ) 不接受 Firebase 存储视频网址



我正在nodejs中的firebase托管和存储中开发视频流web应用程序,如youtube。

我可以通过从客户端获取firebase存储下载url位置来主持视频播放器,并可以播放视频。但我不希望我的用户通过查看网页来查看网址。为此,我在nodejsexpress中制作了一个app.get("/video/videoID"(,并获得了下载url服务器端,我就可以获得下载url。但我无法将URL发送到我的视频播放器。我尝试了res.sendFile("URL路径"(;但它是说;路径应该是绝对的";。我知道路径应该来自服务器本地机器。

有没有任何方法可以将URL从服务器发送到我的视频源路径?

HTML文件:

<video width="100%" controls><source src="/video/songID" type="video/mp4">Your browser does not support HTML video.</video>

服务器代码:

app.get("/video/:songKey", function(req, res, next) {
var fDb = admin.database();
var ref = fDb.ref("videos");
ref.orderByKey().equalTo(req.params.songKey).on('child_added', async (snapshot) => {
var refPath = snapshot.val().video_ref_path; // This is the firebase storage ref path stored in realtime database
var storage = admin.storage();
var songFile = storage.bucket("<bucket-name>").file(refPath);
var [meta] = await songFile.getMetadata();
var token = meta.metadata.firebaseStorageDownloadTokens;
var link = `https://firebasestorage.googleapis.com/v0/b/<bucket_name>/o/${encodeURIComponent(
refPath
)}?alt=media&token=${token}`
res.sendFile(link); //This line is giving error saying path needs absolute path
// If I use res.send(link) call the web location I'm able to get the file URL
});
});

我们对此表示感谢BTW我是nodejs的新手,正在学习它。

提前感谢

res.sendFile()用于将本地存储文件的内容发送到服务器。

您可能想要使用res.redirect(),它旨在将浏览器重定向到另一个URL。

最新更新