2017-11-25 191 views
1

嗨下载计数器我想知道用symfony 3用symfony

下载计数器网/的.htaccess我:

RewriteRule ^/up/(.*).(jpg|zip|pdf)$ /download/counter/$1/$2 [R,L] 

在我的控制器的appbundle /控制器/ DefaultController.php我有:

/** 
    * @Route("/download/counter/{filename}/{ext}", name="downloadcounterfile") 
    */ 



    public function downloadcounterfileAction(Request $request) 
    { 
.... 
} 

但功能 “downloadcounterfileAction” 从不执行

+0

*但函数“downloadcounterfileAction”永远不会执行* - 您可能有其他RewriteRules直接为现有文件提供服务,而无需将其重写到前端控制器。至少默认的Symfony'.htaccess'有这样的规则。 – ccKep

+0

感谢您的建议。最后我找到了一个有效的解决方案:awstats !!!它给出了详细的下载统计。我用它为我的网站:sendeyo.com这是致力于文件托管;) – bestpostmaster

回答

1

如果你想要去一个URL /up/xyz.jpg,实际上最终在/download/counter/xyz/jpg你可以只添加一个新的动作/端点/up/{filename},并解析文件名,分开扩展基名,检查它们以确保它们在三有效的扩展。

也可能有三个别名路由到/up/路径前缀:

/** 
* @Route("/download/counter/{filename}/{ext}", name="downloadcounterfile") 
* @Route("/up/{filename}.jpg", defaults={"ext"="jpg"}) 
* @Route("/up/{filename}.pdf", defaults={"ext"="pdf"}) 
* @Route("/up/{filename}.zip", defaults={"ext"="zip"}) 
*/ 
public function downloadcounterfileAction(Request $request, $filename, $ext) 
{ 
    echo "filename:$filename, ext:$ext\n";die; 
} 

鉴于上述路线块和方法,要的网址:/up/fred.zip显示

filename:fred, ext:zip 

/download/counter/fred/zip与包含在列出的@Routes中的结果相同。

虽然如果在文件名中有一个完整的停止位置将会失败 - No route found for "GET /up/fr.ed.zip"

+0

谢谢你的建议。最后我找到了一个有效的解决方案:awstats !!!它给出了详细的下载统计。我将它用于我的网站:sendeyo.com,它专门用于文件托管 – bestpostmaster