2017-11-25 207 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