rails链接函数文件下载

rails link_to_function file download

本文关键字:文件下载 函数 链接 rails      更新时间:2023-09-26

在rails 2.3.11应用程序中,我正在尝试注册仅对登录用户可用的文件下载。当他们点击链接下载文件(这是指向公共目录中文件的直接链接)时,我希望rails应用程序调用一个方法。

我想我应该使用link_to_function,我可以在rails中编写javascript/方法来记录下载。

我不知道在调用该方法后,如何让文件继续下载。在方法调用(即在后台)之后,应该开始下载文件。

有什么想法吗?

您可能想得太多了,不需要Javascript。你想要的是一个下载操作的链接,它依次注册下载,然后流式传输回文件。除非您有一个不希望Rails处理的非常大的文件,否则这应该可以正常工作。

从控制器发回二进制文件的示例:

send_data(binary_data, :type => 'application/pdf', :filename => 'myfile.pdf', :disposition => 'inline' )

甚至更好:

render :content_type => 'application/octet-stream', :text => Proc.new { |response, output|
    # do something that reads data and writes it to output
}

Abdullah Jibaly的答案是完美的,它的优点是不需要Javascript。

我最终实现了一个jQuery javascript解决方案,使文件下载与以前一样。

在我看来,添加下载类的链接对js的工作很重要:

<%= link_to document.type.value, document.scan.url, :popup => true, :class => "download" %>

添加的javascript,我添加了一个property_id作为要发布的数据,因为我在控制器中需要这个值:

  <script type="text/javascript">
    $(document).ready(function() {
      $(".download").click(function(event){
        $.post("/ajax/property_interested_user", { property_id: $("#property_id").html() });
      });
    });
  </script>