我有一个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();
});
}
}
谢谢!