我试图从一个网站使用其URL获取视频。为了实现这一点,我写了一些JavaScript代码。但是,当我运行代码时,下载的文件大小为0字节。
我确信URL是正确的,因为我在Chrome中输入了相同的URL。我可以看到视频并成功下载。
在该网站上:html在下面
<video controls autoplay name="media">
<source src="https://rexample" type="video/mp4">
</video>
下面是我的代码:
async function downloadVideo(link) {
try {
const response = await fetch(link,{
mode: 'no-cors',
method: 'GET',
headers: {
'Content-Type': 'video/mp4',
}});
const blob = await response.blob();
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'video.mp4';
a.click();
URL.revokeObjectURL(url);
} catch (error) {
console.error(error);
}
}
1条答案
按热度按时间91zkwejq1#
您的代码看起来基本上没问题,但您可以进行一些修改以确保它正确工作。
一、模式:fetch函数中的“no-cors”选项阻止了响应的访问,这可能是0字节文件的原因。相反,您应该删除mode选项或使用mode:'cors'允许跨域请求。
其次,您在请求中设置的Content-Type头是不必要的。服务器应该已经在响应中发送了正确的Content-Type标头,因此您可以完全删除headers对象。