Mi sono imbattuto in modo strano per proteggere i file.scaricare i file con spazi nel loro nome - restrizione tramite htaccess
Fondamentalmente c'è un file download.php vuoto nella cartella protetta e due file che causano file da scaricare (dalla stessa cartella): .htpwd dove password è memorizzata e .htaccess:
RewriteEngine On
##RewriteBase/
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com [NC]
RewriteRule \.(.*)$ - [NC,F,L]
RewriteCond %{QUERY_STRING} ^filename=(.*)$
RewriteRule ^download\.php$ %1
RewriteRule (.*) - [E=file:$1]
Header set Content-type "octet-stream"
Header set Content-disposition "attachment; filename=%{file}e" env=file
##AuthName "Restricted Access"
##AuthType Basic
##AuthUserFile /local/home/example/example.com/downloads/.htpwd
##AuthGroupFile /dev/null
##require valid-user
Esempio di download link:
http://www.example.com/downloads/download.php?filename=dog%20cat%20cow.zip
Se nomefile è dog-cat-cow.zip - tutto funziona. Il problema inizia quando il nome del file è: "dog cat cow.zip", quindi il file verrà scaricato ma il nome del file dopo il download sarà "cane" anziché "cane gatto cow.zip". Quindi il problema è che le persone ottengono file senza nemmeno un'estensione e non hanno idea di cosa farne.
Come questo può essere risolto considerando semplicemente non è possibile rinominare quei file e rimuovere gli spazi? Non sono esperto su come leggere .htaccess e nessuna frase che potrei pensare di cercare dà una risoluzione simile del problema. Qualche idea?
vi consiglio di fare qualcosa di simile 'Header set Content-disposition "attachment; filename = '% {file} e'" env = file', il nome del file tra virgolette – anonymous
Come @anonymous dice, dal momento che il nome del file ha spazi, avrai bisogno di delimitatori di quote. Tuttavia, qual è questo extra 'e' per? – MrWhite
"ma il nome del file dopo il download" - è possibile ottenere che il browser richieda sempre la posizione del download (consigliato) - in quel momento l'utente può correggere il nome del file. – MrWhite