【问题标题】:NodeJS and AngularJS: Download file $http.get() and save to folderNodeJS 和 AngularJS:下载文件 $http.get() 并保存到文件夹
【发布时间】:2018-03-25 13:25:38
【问题描述】:

我正在开发一个 Electron 应用程序,使用 NodeJS 和 AngularJS 从 Web 服务下载 mp3 文件并将它们保存到特定文件夹。 为此,我使用 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');
});

更新:根据@hame-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);
});

问题依然存在。

【问题讨论】:

  • 目前还不清楚那里发生了什么。 AngularJS(客户端)如何调用 Node fs(服务器端)?是电子应用程序吗?问题应该清楚地说明问题。至于“仍然存在”,请提供stackoverflow.com/help/mcve
  • @estus 你是对的。我忘了提到它是一个电子应用程序。我已经更新了我的问题。

标签: angularjs node.js electron fs angularjs-http


【解决方案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){ ..

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2021-01-07
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多