node.js - 如何以编程方式下载视频?
问题描述
我正在尝试通过链接以编程方式从网络服务器下载视频文件。
如果您通过网络浏览器单击该链接,它只会提示您下载视频并提供文件名称,然后正确下载视频。
我有一些 nodejs 代码只是向该链接发出 HTTP 请求并成功从中获取原始数据并将其保存到默认文件video.mp4
const https = require('https');
const fs = require('fs');
https.get('https://url.tocdn.com/myvideoid', (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
fs.writeFile('./video.mp4', data, (err) => console.log(err))
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
问题是,例如,当我尝试通过 Windows Media Player 播放该文件时,它只会显示有关文件格式的错误。我错过了一些明显的东西吗?
解决方案
string
如果您假装存储字节,请不要使用,
或者application/octet-stream
在我的情况下(这是相同的)
从给定的代码段更改:
resp.on('data', (chunk) => {
data = Buffer.concat([data, Buffer.from(chunk)]);
});
并确保初始化data
如下:
let data = Buffer.from([]);
推荐阅读
- next.js - 自定义页面中的 NextJs route.push()
- c# - 为什么使用 MessagingCenter 将数据从数据库从 iOS 项目传递到 MainPage 时 ListView.ItemSource 为空 - Xamarin
- swift - TableView 中的 Skeleton View 使用
- html - 如何从两侧在 div 中创建箭头?
- android - 在android中收到广播时如何调用API
- marklogic - MLCP 导出:是否可以更改由 mlcp 导出创建的 zip 文件的名称
- android - Kotlin:一次构建一个类并在任何地方访问它
- java - 如何使用 java 将 100 MB 文件上传到共享点?
- java - 如何使用 Selenium 和 Java 从网络选项卡中的 DOM 结构中捕获授权承载令牌
- c# - 如何彻底销毁arrayPool