2016-08-31 4 views
1

Ich habe auf meinem Server Bilder mit zufälligen Namen (zB "8a4f5d61.jpg") und ich muss den Namen dieser Dateien mit gegebenen GET-Argument ändern.

Also, wenn ich eine solche URL haben:

http://my.server/8a4f5d61.jpg?attachement=custom_name.jpg

und ich möchte Apache-Header wie folgt hinzuzufügen:

-Header Content-Disposition: „attachement, filename = $ _GET ['attachement'] "

wird der Benutzer diese bereits umbenannte Datei in "custom_name.jpg" herunterladen.

Ich habe keine Ahnung, wie man das GET Argument bekommen von innen .htaccess


Auf nginx ist es sehr einfach, hier ist mein Arbeits nginx config:

location ~ ^/.*\.jpg$ { 
    if ($arg_inline) { 
     add_header Content-Disposition "inline; filename=$arg_inline"; 
    } 
    if ($arg_attachement) { 
     add_header Content-Disposition "attachement; filename=$arg_attachement"; 
    } 
} 

Ist es erreichbar auf Apache mit .htaccess?

Antwort

2

ich es nicht getestet, aber theoretisch, eine Umgebungsvariable gesetzt, wenn Sie Ihre Anfrage, die die vorgegebenen Kriterien entspricht und später verwenden mod_headers' Header Richtlinie den Header zu setzen:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^attachment=(.+)$ [NC] 
RewriteRule^- [E=file_name:%1,L] 

Header always set Content-Disposition "attachement; filename=%{file_name}e" env=file_name 

wo die %{file_name}e Umwelt Wert für file_name.

+0

Es muss '[E = Dateiname:% 1, L]' (PLZ fix Ihren Beitrag) und es funktioniert sehr schön :) Danke! – GreggD

+0

@ a6r Fest, danke! Ich habe mindestens einen Fehler im Code erwartet: P Gut zu wissen, dass es funktioniert. :) – hjpotter92

+1

Vergessen zu erwähnen, dass ich auch 'env = file_name' entfernen musste, vielleicht Server bezogene Sache ... – GreggD

Verwandte Themen