我希望用户在更新codeigniter中数据库的下载计数器后下载文件

时间:2016-03-21 08:26:29

标签: php codeigniter

我正在尝试为文件设置下载计数器。我的计划是:当用户点击下载按钮时,该文件的ID被发送到下载控制器,下载控制器用其唯一ID更新下载列1,然后用户被重定向回视图,并且下载开始。我找到了一种方法,可以在单击下载按钮时将特定文件的ID发送到下载控制器。我在视图中使用了带有隐藏字段的表单来发送id。       我在网上查了一下,我看到很多下载计数器,但大多数都更新了文本文件。我想要更新数据库中的列,而不是文本文件。这是我的下载表单视图:

   <form id="form" action="<?php echo base_url();?>Download" method="post">
    <input type="hidden" placeholder="ID" name="id"  value ="<?php echo $res->id; ?>"  class="wow fadeInUp">
    <input type="hidden" placeholder="ID" name="url"  value ="<?php echo $res->url; ?> class="wow fadeInUp">
    <input type="submit" value="DOWNLOAD" id="download" class="wow fadeInUp">
    </form>

此视图将id和其他数据发送到下载控制器,这是我的下载控制器:

  function index()
  { 
     $id = $this->input->post("id");
     $url = $this->input->post("url");
     $this->home_model->update_downloads_column($id);
      redirect("Music/".$url);
  }

我需要前进的方向。现在,数据库上的下载列已经更新,我现在如何开始下载该文件?

1 个答案:

答案 0 :(得分:0)

为什么不使用ajax传递值和具有下载属性的html中的锚标记?

检查一下:

  

http://www.w3schools.com/tags/att_a_download.asp

代码:

<a href="/pathtofile/file.txt" id="download" download>

然后做一些像:

<script>
$(document).ready(function(){
    $("#download").on( "click",function () {
        var id = $('input[name=id]').val();
        var url = $('input[name=url]').val();
       $.ajax({
            type: "POST",
            url: <?php echo base_url();?>+"Download",
            data: {id: id, url: url},
             success: function(){
                //if success do something
                }
             });
   });
})
</script>

因此,当您单击锚点时,将开始下载,并且ajax会将id和url传递给控制器​​。