在axios中发送GET / POST请求以接收React / Express应用程序中的Blob

时间:2018-12-24 08:14:43

标签: reactjs express post get axios

我有一个youtubeVideos Downloader应用,我必须发送一个get请求(带有URl)才能在react / express应用中下载视频。我对使用什么感到困惑,如果我使用GET或POST,必须使用我不希望使用的查询参数,因为我必须做额外的工作才能使用户输入的网址必须转义“?”并且我想到了在req.body.url中使用Post,这样我就可以在路由处理程序中使用它了。我需要帮助该走哪条路? 我在express中的index.js文件:

app.post('/api/getmevideo', async (req, res) => {



    try {
        const videoURL = req.body.url;
        const videoName = await downloadVideoAsync(videoURL);
        const videoPath = path.join(__dirname + `/videos/${videoName}.mp4`);
        res.sendFile(videoPath, function() {
            fs.unlinkSync(videoPath);
        });
    }
    catch(ex) {
        res.send({
            message : "something went wrong"
        })
    }



  });

React的App.js中的Axios代码

downloadHandler() {
         if(this.state.inputText !== '') {
                axios({
                        url: '/api/getmevideo',
                        method: 'POST',
                        responseType: 'blob', // important
                    }, { url : this.state.inputText }).then((response) => {
                            const url = window.URL.createObjectURL(new Blob([response.data]));
                            const link = document.createElement('a');
                            link.href = url;
                             link.setAttribute('download', 'video.mp4'); 
                            document.body.appendChild(link);
                            link.click();
                        });
                    }
    }

谢谢!

0 个答案:

没有答案