【发布时间】:2021-05-25 12:44:45
【问题描述】:
目前我正在使用 laravel,如您所知,有很多方法可以计算单个页面的访问者(路线上的点击量)。但我也想计算公共文件夹中的图像或 pdf 文件的访问者,有什么想法吗?
【问题讨论】:
标签: laravel counter traffic visitor-pattern
目前我正在使用 laravel,如您所知,有很多方法可以计算单个页面的访问者(路线上的点击量)。但我也想计算公共文件夹中的图像或 pdf 文件的访问者,有什么想法吗?
【问题讨论】:
标签: laravel counter traffic visitor-pattern
其中一种可能的方法是让路由返回 pdf/image 流。这样您就可以使用与页面相同的方法。它可以通过 $request->ip 或其他方式。缺点是,您必须重新制作页面上的所有图像/pdf 链接以重定向到路由而不是资产路径或您使用的任何内容。
【讨论】:
您需要使用应用程序中的代理 URL 绕过到文件位置的路由。然后使用代理 URL 提供文件以访问文件。
例如:如果您有一个可在 yourdomain.com/public/some-file.pdf 访问的 pdf 文件,请为 yourdomain.com/proxy/some-file.pdf 之类的相同内容创建一个代理 URL。
在您的路线文件中创建相应的路线。请注意,最后一部分是动态的,应该可以识别您的文件。
Route::get('/proxy/{fileName}', [DefaultController::class, 'proxy'])
在您的 DefaultController.php 文件中进行必要的计数记录,然后将您的原始文件作为响应。
public function proxy($fileName) {
***your logic to increase visit count. db addition or something
$pathToFile = Storage::path($fileName);
return response()->file($pathToFile);
}
【讨论】: