下载事件完成后如何清除/清空输入字段中的文本? -- Node.JS

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

我花了好几个小时来处理下载完成后未清空的文本(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 可以处理该过程(以清除填充的输入字段)..只是我的拙见,但实际上如何实现它非常令人困惑......

我真的很感谢那些提供帮助的很棒的人..

附注抱歉,如果这是一个重复的问题,我已经搜索了我在这里见过的所有问题,并尝试从任何其他网络资源中找到解决方案,但失败了......

javascript node.js input download
1个回答
0
投票

我在当前函数中没有看到任何删除输入值的地方,因此输入值仍然存在。用空字符串替换输入值应该可以解决问题:

 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");
    }
});

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