【问题标题】:Downloading .csv from Express backend to Angularjs从 Express 后端下载 .csv 到 Angularjs
【发布时间】:2014-08-15 05:37:48
【问题描述】:

我也看到过同样的问题 here,但是该解决方案在我的情况下不起作用并输入使用的代码片段

$('<form action="'+ url +'" method="'+ ('post') +'">'+inputs+'</form>')
           .appendTo('body').submit().remove();

返回Reference $ is not defined的错误

我有一个如下所示的下载请求:

controller.js

$http.put('/download' {file:$scope.inputInfo.name.$modelValue+'.csv'}).success(function(data,status,headers){
        console.log(status);
        console.log(data);

    })

app.js

app.put('/download', function(req,res){
    console.log(req.body.file)
    res.download(__dirname +'/'+ 'req.body.file, function(err){
      if(err){console.log(err)}
   })

})

我的 controller.js 将原始文件输出作为数据返回,而不是从页面启动下载。我是否缺少以角度启动此文件下载的东西? 任何帮助将不胜感激。

【问题讨论】:

  • Reference $ is not defined 表示执行时找不到 jQuery。这是你唯一的错误吗?
  • 是的,这是我唯一的错误 - 当我将 jQuery 库添加到我的页面时,我触发下载时只返回了一个空白页面
  • 您从中获得帮助的答案有其形式的操作。提交表单时重定向操作。在提交按钮的单击处理程序中,您必须将e 传递给处理程序的回调函数并在回调中使用e.preventDefault() 方法。
  • 这完全有帮助,虽然我不需要 e.preventDefault(),但我在下面发布了答案。

标签: javascript node.js angularjs csv express


【解决方案1】:

Seth 在我的页面上没有 jQuery,你完全让我朝着正确的方向前进。

这是我添加到 controllers.js 中代替 $http.put() 的完成代码:

$('<form action="'+ "/download" +'" method="'+ ('post') +'">'+'<input type="hidden" name="file" value="'+$scope.inputInfo.name.$modelValue+'"'+'/></form>')
           .appendTo('body').submit().remove();

再次感谢您对此的帮助。

【讨论】:

  • 太棒了,你想通了......很高兴能提供帮助!
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 2019-04-15
  • 2014-11-29
  • 2013-12-14
  • 2020-02-17
  • 1970-01-01
  • 2014-11-19
  • 2014-11-09
相关资源
最近更新 更多