Javascript 如何从Node.js中的URL下载音频文件?

Javascript 如何从Node.js中的URL下载音频文件?,javascript,node.js,audio,Javascript,Node.js,Audio,如何从URL下载音频文件并将其存储在本地目录中? 我正在使用Node.js,并尝试了以下代码: var http = require('http'); var fs = require('fs'); var dest = 'C./test' var url= 'http://static1.grsites.com/archive/sounds/comic/comic002.wav' function download(url, dest, callback) { var file = fs.

如何从URL下载音频文件并将其存储在本地目录中? 我正在使用Node.js,并尝试了以下代码:

var http = require('http');
var fs = require('fs');
var dest = 'C./test'
var url= 'http://static1.grsites.com/archive/sounds/comic/comic002.wav'
function download(url, dest, callback) {
  var file = fs.createWriteStream(dest);
  var request = http.get(url, function (response) {
    response.pipe(file);
    file.on('finish', function () {
      file.close(callback); // close() is async, call callback after close completes.
    });
    file.on('error', function (err) {
      fs.unlink(dest); // Delete the file async. (But we don't check the result)
      if (callback)
        callback(err.message);
    });
  });
}
未发生错误,但未找到该文件。

重复,但以下是针对您的问题的代码:

var http = require('http');
var fs = require('fs');

var file = fs.createWriteStream("file.wav");
var request = http.get("http://static1.grsites.com/archive/sounds/comic/comic002.wav", function(response) {
  response.pipe(file);
});
的副本,但以下是针对您的问题的代码:

var http = require('http');
var fs = require('fs');

var file = fs.createWriteStream("file.wav");
var request = http.get("http://static1.grsites.com/archive/sounds/comic/comic002.wav", function(response) {
  response.pipe(file);
});

您的代码实际上很好,只是不调用下载函数。尝试将此添加到末尾:

download(url, dest, function(err){
   if(err){
     console.error(err);
   }else{
     console.log("Download complete");
   }
});
另外,将
dest
的值更改为其他值,例如
“test.wav”
或其他值<代码>'C./test'是一个错误的路径


我在我的机器上试过了,你的代码运行得很好,只需添加调用并更改
dest
你的代码实际上很好,只是不调用下载功能。尝试将此添加到末尾:

download(url, dest, function(err){
   if(err){
     console.error(err);
   }else{
     console.log("Download complete");
   }
});
另外,将
dest
的值更改为其他值,例如
“test.wav”
或其他值<代码>'C./test'是一个错误的路径


我在我的机器上试用了它,您的代码运行良好,只需添加调用并更改
dest

以下是使用Axios和可能需要授权的API的示例

const Fs=require('Fs');
const Path=require('Path');
const Axios=require('Axios');
异步函数下载(url){
让filename=“filename”;
const username=“user”;
const password=“password”
const key=Buffer.from(username+':'+password).toString(“base64”);
const path=path.resolve(_dirname,“audio”,filename)
常数响应=等待Axios({
方法:“GET”,
url:url,
responseType:'流',
标题:{“授权”:“基本”+密钥}
})
response.data.pipe(Fs.createWriteStream(路径))
返回新承诺((解决、拒绝)=>{
response.data.on('end',()=>{
解决();
})
response.data.on('error',()=>{
拒绝(错误);
})
})

}
下面是一个使用Axios和可能需要授权的API的示例

const Fs=require('Fs');
const Path=require('Path');
const Axios=require('Axios');
异步函数下载(url){
让filename=“filename”;
const username=“user”;
const password=“password”
const key=Buffer.from(username+':'+password).toString(“base64”);
const path=path.resolve(_dirname,“audio”,filename)
常数响应=等待Axios({
方法:“GET”,
url:url,
responseType:'流',
标题:{“授权”:“基本”+密钥}
})
response.data.pipe(Fs.createWriteStream(路径))
返回新承诺((解决、拒绝)=>{
response.data.on('end',()=>{
解决();
})
response.data.on('error',()=>{
拒绝(错误);
})
})

}
看起来您并没有实际调用
下载
功能,所以什么都没有发生。为什么在var之前有
字符,然后是最后一行
?在这些引号被修复之前,所有答案都不会起作用。可能重复的答案看起来不像你真的调用了
下载
函数,所以什么都没有发生。为什么在var之前有
字符,然后是最后一行
?在这些引号被修复之前,所有答案都不会起作用。欢迎使用@RajaSekar的可能重复项!请将答案标记为正确,以便其他人知道问题已被回答。:)
fs.createWriteStream(“file.wav”)
是否在服务器上创建文件?或者它只是让它可以发送回客户端?@user1063287否,
fs.createWriteStream(“file.wav”)
不会在服务器上创建文件。它会打开一个文件的写入流,这意味着当字节从某个地方(服务器)慢慢进入时,我们已经告诉计算机让这些字节在到达时进入硬盘驱动器(file.wav)。@RajaSekar不客气!请将答案标记为正确,以便其他人知道问题已被回答。:)
fs.createWriteStream(“file.wav”)
是否在服务器上创建文件?或者它只是让它可以发送回客户端?@user1063287否,
fs.createWriteStream(“file.wav”)
不会在服务器上创建文件。它会打开一个文件的写入流,这意味着当字节从某个地方(服务器)慢慢进入时,我们已经告诉计算机让这些字节在到达时慢慢进入硬盘驱动器(file.wav)。