2017-10-13 2 views
0

Ich entwickle eine Electron App NodeJS und AngularJS in Ordner speichern MP3-Dateien von einem Web-Service zum Herunterladen und sie in einen bestimmten Ordner speichern. Um dies zu erreichen, benutze ich AngularJS $ http.get(), um die Dateien und das Node File System herunterzuladen, um die heruntergeladenen Daten in einem Ordner zu speichern.

Mein Problem im Moment ist, dass ich die Datei nicht richtig speichern kann. Die Daten werden heruntergeladen und eine Datei wird erstellt, aber sie scheint beschädigt zu sein. Mit anderen Worten funktioniert die MP3 nicht.

Hier ist ein Beispielcode von dem, was ich tue:

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: Geprüft der folgende Ansatz basiert auf @ hame-Dhib Vorschlag:

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); 
}); 

Das Problem weiterhin besteht.

+1

Es ist unklar, was dort los ist. Wie kommt es, dass AngularJS (Client-Seite) Node fs (Server-Seite) aufruft? Ist es eine elektronische App? Die Frage sollte das Problem klar benennen. Wie für "immer noch", bitte, http://stackoverflow.com/help/mcve – estus

+0

@estus bieten Sie haben Recht. Ich habe vergessen, eine Electron-App zu erwähnen. Ich habe meine Frage aktualisiert. – Ricky

Antwort

1

Sie sollten response als Blob definieren:

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