如何提供文件以从Rails下载?

约翰科瑟

因此,这可能是一个简单的问题,但我从未做过。

我有一个Rails操作,它查询数据库并从查询结果中创建一个csv字符串。

我想将查询字符串放入一个.csv文件中,然后当用户发出与此方法相关联的http请求时,该.csv文件将下载到用户的计算机上。

我怎样才能做到这一点?

更新

该文件是从R​​ails发送的,但是前端的我的angular应用程序(请求csv)没有下载它。

这是我用来从Rails应用程序请求文件的角度代码

$scope.csvSubmit = function() {
  var csv = $.post('http://ip_addr:3000/api/csv', { 'input': $scope.query_box });
  csv.done(function(result){
     //empty - after the request is sent I want the csv file to download
  })
}
道格拉斯·卡玛塔(Douglas Camata)

您可以使用该send_file方法,将路径传递到文件作为第一个参数,如Rails文档中所示

更新

您可以使用一个临时文件来保存CSV,如下所示:

require 'tempfile'

# automatically creates a file in /tmp
file = Tempfile.new('data.csv', 'w')
file.write('my csv')
file.close

send_file(file.path)

# remove the file from /tmp
file.unlink

更新2:AngularJS下载

有两种方法可以完成此操作:您可以添加一个隐藏的href来下载页面中的文件并单击它,或者将用户重定向到单击按钮时发送文件的Rails URL。请注意,重定向将使用url中的参数,因此根据的结构,重定向将无法正常工作query_box

要使用CSV向页面添加隐藏的href,请执行以下操作:

$scope.csvSubmit = function() {
  var csv = $.post('http://ip_addr:3000/api/csv', { 'input': $scope.query_box });
  csv.done(function(result){
    var hiddenElement = document.createElement('a');

    hiddenElement.href = 'data:attachment/csv,' + encodeURI(result);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'filename.csv';
    hiddenElement.click();
  })
}

要使用重定向:

$scope.csvSubmit = function() {
  var url = 'http://ip_addr:3000/api/csv/?' + 'input=' + encodeURI($scope.query_box);
  window.location = url;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

提供远程文件下载

来自分类Dev

如何通过spring @RestController提供压缩下载的文件?

来自分类Dev

如何在Django中提供可下载的zip文件

来自分类Dev

如何使用Wiki下载的索引文件中提供的信息?

来自分类Dev

如何配置nginx以提供HTML文件供查看而不是下载?

来自分类Dev

如何动态提供文件,然后使其在Django中可下载?

来自分类Dev

如何在Django中提供可下载的zip文件

来自分类Dev

如何提供Windows Azure网站上下载的.exe文件?

来自分类Dev

提供asc文件如何确保我下载了预期的源代码?

来自分类Dev

如何在django中提供要下载的文件?

来自分类Dev

使用Ruby on Rails提供PDF文件-下载文件中的空白页/白页

来自分类Dev

提供.json文件以供下载

来自分类Dev

提供CSV文件供下载

来自分类Dev

提供.json文件以供下载

来自分类Dev

如何从rails中的数据库下载上传的存储文件?

来自分类Dev

Rails提供大文件

来自分类Dev

Django:在mongodb中提供从GridFS下载的文件

来自分类Dev

硒下载时提供文件名

来自分类Dev

提供Inno Setup下载功能的文件大小

来自分类Dev

提供内容可变的文件下载。的PHP

来自分类Dev

SLIM API-提供要下载的文件

来自分类Dev

在哪里提供要由 IOS 下载的文件

来自分类Dev

我如何提供本地下载链接到htaccess拒绝的文件

来自分类Dev

如何使用金字塔FileResponse提供此视频文件以供下载

来自分类Dev

如何下载通过http请求提供给我的文件?

来自分类Dev

php:如何使用带有输出缓冲压缩功能的readfile正确提供文件下载

来自分类Dev

如何为通过HTTP身份验证保护的文件下载提供服务

来自分类Dev

如何下载文件

来自分类Dev

如何下载上传的文件?

Related 相关文章

热门标签

归档