2017-10-13 12 views
0

をフォルダに保存します。 これを達成するために、AngularJS $ http.get()を使用してファイルをダウンロードし、Node File Systemを使用して、ダウンロードしたデータをフォルダに保存します。

現時点で私の問題は、ファイルを正しく保存できないことです。データがダウンロードされ、ファイルが作成されますが、破損しているようです。つまり、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(クライアント側)がノードfs(サーバー側)を呼び出すのでしょうか?それはElectronアプリですか?問題は、問題をはっきりと述べるべきです。 「まだ解決されていません」に関しては、http://stackoverflow.com/help/mcve – estus

+0

@estusを用意してください。私は電子アプリについて言及するのを忘れていた。私は私の質問を更新しました。 – Ricky

答えて

1

あなたはブロブとしてresponseTypeを定義する必要があります。

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