如何在 Laravel 4 中跟踪用户下载?

Posted

技术标签:

【中文标题】如何在 Laravel 4 中跟踪用户下载?【英文标题】:How to keep track of users download(s) in Laravel 4? 【发布时间】:2015-02-09 11:26:54 【问题描述】:

我使用 Laravel 4。

我的视图中有一个下载按钮。

我有很多users 可以访问see/click 以从该按钮下载。

这是我的问题,

有什么方法可以跟踪how many 我的文件下载的时间和whom 的时间?

比方说,

用户A下载27次 用户B下载5次 用户 C 从不下载 用户D下载200次

以此类推……

我的控制器功能

public function file_download($id)
    

        $catalog_download = CatalogDownload::findOrFail($id);
        $distributor      = Auth::user()->distributor()->first();
        $export_type      = $distributor->export_type()->first();
        $product_export =  $catalog_download->product_exports()->first();

        $destinationPath  = base_path().'/app/files/product_export/'. $catalog_download->id.'/'. $export_type->id.'/';
        $file_name        = $product_export->file_path;
        $pathToFile       = $destinationPath .$file_name;

        return Response::download($pathToFile);
    

【问题讨论】:

【参考方案1】:

在你的数据库中

您应该创建另一个属性。我们就叫它download_count

整数 将默认设置为 0

在你的控制器函数中,最后,做吧。

$user->download_count = $user->download_count +1; $user->save();

每次,用户尝试下载某物时,他们都需要通过该功能 - 对吧?

只需increment(+1) 它,每次,他们都会经历它。我希望我足够清楚。祝你好运:)

【讨论】:

我喜欢你的解决方案。好回答!我必须尝试一下,我会告诉你的。 哦...我的荣幸。如果我的解决方案对您有用,请告诉我。【参考方案2】:

只需将用户名和下载文件的名称作为 Ajax 调用的数据添加到按钮的 ajax 调用,并确保每次单击按钮到数据库。然后你可以简单地查询文件和用户组合,你就会得到下载次数。

另一种方法是将保存功能添加到您的控制器并通过控制器保存上述组合

【讨论】:

你能给我一个快速的 Ajax 调用示例代码吗?当你可以 - :) 不必是正确的语法,伪代码就可以了。我只需要查看基本逻辑——如果我决定在 Ajax 中执行此操作。谢谢。我希望你能为我做这件事。【参考方案3】:

我能想到的唯一选择是将其存储在数据库中。

一旦用户点击下载按钮,在数据库中添加+1。

【讨论】:

以上是关于如何在 Laravel 4 中跟踪用户下载?的主要内容,如果未能解决你的问题,请参考以下文章

如何在作曲家(laravel 4)中删除保存的用户名和密码

如何在 api laravel 8 中跟踪文件的上传大小

如何在laravel 5.2中为每个文件添加用户ID以供下载?

Laravel Tracker 不产生结果

如何在 Laravel 4 中选择相关模型计数为 0 的模型?

在 Laravel 中处理加密文件(如何下载解密文件)