我正在尝试为文件设置下载计数器。我的计划是:当用户点击下载按钮时,该文件的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);
}
我需要前进的方向。现在,数据库上的下载列已经更新,我现在如何开始下载该文件?
答案 0 :(得分:0)
为什么不使用ajax传递值和具有下载属性的html中的锚标记?
检查一下:
代码:
<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传递给控制器。