我花了好几个小时来处理下载完成后未清空的文本(URL)。我现在制作的应用程序是一个视频下载器,在客户端,应该填写一个 URL,然后单击下载按钮。
视频下载成功,但有一个小问题是视频下载后输入字段中的 URL 没有被清除。下面的图片会很好地解释它:
截图:https://prnt.sc/DL6WldDYi5PE
如何让它发挥作用?我希望在处理完成后删除已填充的用户输入字段并使其完全为空。
这是服务器代码中对应的代码块:
app.get('/download', async (req, res) => {
try {
const url = req.query.url;
console.log(url);
const options = {
quality: '18',
filter: format => format.container === 'mp4' && format.hasAudio && format.hasVideo,
};
//Fetch Video ID metadata
const videoId = await ytdl.getURLVideoID(url);
console.log("Video ID fetched:", videoId);
//Set the content dispositon header to trigger download
res.attachment(`${videoId}.mp4`);
//Download and pipe the video stream
const videoStream = ytdl(url, options);
videoStream.pipe(res);
videoStream.on('finish', () => {
console.log("Video is downloaded.");
res.end();
});
} catch (err) {
console.error(err);
res.status(500).send("Internal server error");
}
});
我尝试在客户端(EJS)添加一个事件侦听器以清除输入字段。但根本没用。我认为每次下载视频时,服务器端都需要进行一些调整,以向客户端发出视频下载完成的信号,以便 addEventListener 可以处理该过程(以清除填充的输入字段)..只是我的拙见,但实际上如何实现它非常令人困惑......
我真的很感谢那些提供帮助的很棒的人..
附注抱歉,如果这是一个重复的问题,我已经搜索了我在这里见过的所有问题,并尝试从任何其他网络资源中找到解决方案,但失败了......
我在当前函数中没有看到任何删除输入值的地方,因此输入值仍然存在。用空字符串替换输入值应该可以解决问题:
place_Input_Field_Id_Here.value = '';
这是您提供的代码片段,我猜测是您的输入字段 id
videoId.value = '';
,但请随意将其替换为您实际的输入字段 id 的实际值。
app.get('/download', async (req, res) => {
try {
const url = req.query.url;
console.log(url);
const options = {
quality: '18',
filter: format => format.container === 'mp4' && format.hasAudio && format.hasVideo,
};
//Fetch Video ID metadata
const videoId = await ytdl.getURLVideoID(url);
console.log("Video ID fetched:", videoId);
//Set the content dispositon header to trigger download
res.attachment(`${videoId}.mp4`);
//Download and pipe the video stream
const videoStream = ytdl(url, options);
videoStream.pipe(res);
videoStream.on('finish', () => {
console.log("Video is downloaded.");
res.end();
});
//clear input value
videoId.value = '';
} catch (err) {
console.error(err);
res.status(500).send("Internal server error");
}
});