2012-02-29 6 views
0

Il existe un fichier sur le serveur: files/1 Son nom et son extension sont stockés dans une base de données. (Par exemple: a.jpg) Est-il possible de télécharger ce fichier comme a.jpg pas comme 1? Si oui, comment?Comment enregistrer un fichier à partir d'un serveur sans extension?

En d'autres termes:

<a href='/files/1'>file</a> 

doit télécharger le contenu de des 1 de fichier avec le nom a.jpg

+0

"télécharger" - avec quel outil? «curl»? 'wget'? un programme écrit à la main? – sarnold

+0

à partir du Web à l'aide d'un lien (et enregistrer sous) –

+0

Jetez un coup d'œil à [this] (http://stackoverflow.com/a/5649645/825789). – bfavaretto

Répondre

1

exemple de php.net manual:

<?php 
$file = 'monkey.gif'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
?> 
+0

Merci, cela fonctionne bien, je l'ai mis à jour avec les variables d'exemple si cela ne vous dérange pas. –

1

Si j'interprète bien votre question, alors:

htaccess:

RewriteEngine On 
RewriteRule ^([^/]*)\$ /getfile.php?fn=$1 [L] 

Puis getfile.php lit quel fichier c ou correspond à $ _GET ["fn"] et sort cela.

+0

Alors que devrait contenir getfile.php? –

+0

Il devrait avoir une base de données sélectionner où le pseudo nom de fichier est $ _GET ["fn"] afin qu'il obtienne le vrai, puis lire le fichier et wcho it. – axiomer

+0

J'ai mis à jour ma réponse. De cette façon j'ai testé mais ça ne marche pas. –

Questions connexes