2012-01-18 117 views
1

我想在symfony2中创建一个区域,其中有用户可以下载的文件列表。跟踪文件下载

我希望能够跟踪每个文件下载的次数。

任何人都可以阐明我如何实现这一目标?

+0

到目前为止你做了什么?请告诉我们一些代码 – kufi 2012-01-18 08:18:46

+0

我今天要开始,所以想知道是否有人可以给 – user825904 2012-01-18 09:24:18

+2

开始一些方向。正如你想跟踪下载的数量,你不能直接链接到你的文件。您需要一名服务于该文件并跟踪点击次数的控制员。 一个类似的例子可以在这里找到:http://www.symfony-zone.com/wordpress/2009/08/03/serving-pdf-files-through-symfony-controllers/ 这应该给你一个开始。 – kufi 2012-01-18 09:35:08

回答

1

在您必须设置URL到控制器的文件列表中的简单方式,这会对下载的数量,比打印直接链接归档。

{# list of files in template %} 
{% for file in files %} 
    <a href="{% path('counting', {'id': file.id}) %}">{{ file.name }}</a> 
{% endfor %} 

// Controller 
/** 
* Counting the number of file downloads 
* 
* @Route("/counting/{id}", name="counting", requirements={"id" = "\d+"}) 
* @Template() 
*/ 
public function countingAction($id) 
{ 
    $em = $this->getDoctrine()->getEntityManager(); 
    $file = $em->getRepository('MyBundle:File')->find($id); 

    $count = $file->getCount(); 
    $file->setCount($count + 1); 

    $em->persist($entity); 
    $em->flush(); 

    return array('file' => $file); 
} 

{# final file page in template #} 
<a href="{{ file.url }}">{{ file.name }}</a> 
-1

使用原则实体 - 一些相关信息是这篇文章“How to handle file upload

+0

“我想在symfony2中创建一个区域,其中我有用户可以**下载**的文件列表。” – JamesHalsall 2012-01-18 12:45:34