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


i want to users to download a file after updating the downloads counter on the database in 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);
  }

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

为什么不使用 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 传递给控制器。