2017-10-13 205 views
0

我正在開發使用和的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://stackoverflow.com/help/mcve – estus

+0

@estus你是對的。我忘了提及它的一個電子應用程序。我已經更新了我的問題。 – Ricky

回答

1

你應該定義的responseType爲BLOB:

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