2017-11-25 6 views
1

Hallo Ich möchte mit symfony 3Download-Zähler mit symfony

in web/.htaccess ich einen Download-Zähler realisieren haben:

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

in meinem Controller AppBundle/Controller/DefaultController.php I haben:

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



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

Aber die Funktion "downloadcounterfileAction" wird nie

ausgeführt
+0

* Aber die Funktion "downloadcounterfileAction" wird nie ausgeführt * - Sie haben wahrscheinlich andere RewriteRules, die vorhandene Dateien direkt bereitstellen, ohne sie auf Ihren Frontcontroller zu schreiben. Zumindest die Standard-Symfony '.htaccess' hat solche Regeln. – ccKep

+0

danke für die Vorschläge. Endlich habe ich eine effektive Lösung gefunden: awstats !!! es gibt detaillierte Download-Statistiken. Ich benutze es für meine Website: sendeyo.com, die Datei-Hosting gewidmet ist;) – bestpostmaster

Antwort

1

Wenn Sie zu einer URL gehen möchten /up/xyz.jpg und tatsächlich bei /download/counter/xyz/jpg enden, können Sie einfach eine neue Aktion/Endpunkt /up/{filename} hinzufügen und den Dateinamen analysieren, indem Sie den Basisnamen von extention aufteilen, um sicherzustellen, dass sie in den dreien sind gültige Erweiterungen

Es ist auch möglich, drei weitere Alias ​​Routen zum /up/ Pfadpräfix haben:

/** 
* @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; 
} 

In Anbetracht der oben Route-Block und Verfahren, auf die URL gehen: /up/fred.zip zeigt

filename:fred, ext:zip 

/download/counter/fred/zip erzeugt das gleiche Ergebnis, das in den aufgeführten @Routes enthalten ist.

Obwohl es fehlschlägt, wenn es einen vollständigen Punkt im Dateinamen gibt - No route found for "GET /up/fr.ed.zip".

+0

danke für die Vorschläge. Endlich habe ich eine effektive Lösung gefunden: awstats !!! es gibt detaillierte Download-Statistiken. Ich benutze es für meine Website: sendeyo.com, die auf Datei-Hosting gewidmet ist – bestpostmaster