和的NodeJS AngularJS:下载文件$ http.get()并保存到文件夹

问题描述:

我正在开发使用和的NodeJS AngularJS从Web服务下载的MP3文件并将其保存到指定文件夹的电子应用。 为了实现这一点,我使用AngularJS $ http.get()来下载文件和节点文件系统以将下载的数据保存到文件夹中。

我现在的问题是我无法正确保存文件。数据被下载并创建一个文件,但它似乎损坏。换句话说MP3不起作用。

下面是我在做什么的样本代码:

var fs = require("fs"); 
var path = require("path"); 

var resquest = $http.get(url, config).then(function(response) 
{ 
    var downloadFolder = path.join(app.getAppPath(), '../../downloads/test.mp3'); 

    var filestream = fs.writeFile(downloadFolder, response.data, 'binary'); 
}); 

UPDATE:测试基于@哈梅-dhib建议使用以下方法:

var request = $http({ 
    method:'GET', 
    responseType: 'blob', //<--- 
    url:'http://api/', 
    headers: 
    { 
     'Content-Type': 'audio/mpeg', //<--- 
     'Authorization': data.token 
    } 
}).then(function successCallback(response) 
{ 
    var downloadFolder = path.join(app.getAppPath(), '../../downloads/test.mp3'); 

    var filestream = fs.writeFile(downloadFolder, response.data, 'binary'); 

}, function errorCallback(response) 
{ 
    console.log(response); 
}); 

的问题仍然存在。

+1

目前还不清楚发生了什么事情在那里。 AngularJS(客户端)如何调用Node fs(服务器端)?它是电子应用程序吗?这个问题应该清楚地说明问题。至于'仍然存在',请提供http://*.com/help/mcve – estus

+0

@estus你是对的。我忘了提及它的一个电子应用程序。我已经更新了我的问题。 – Ricky

你应该定义的responseType为BLOB:

$http({ 
    method:'POST', 
    responseType: 'blob', //<--- 
    url:'/api/lessons', 
    data:{cards:lessonList}, 
    headers : { 
    'Content-type' : 'audio/mpeg', 
    } 
}).success(function(data, status, headers, config){ ..