118 votes

Comment définir le nom du fichier téléchargé à partir du navigateur ?

Je suis en train d'écrire une application web qui, entre autres choses, permet aux utilisateurs de télécharger des fichiers sur mon serveur. Afin d'éviter les conflits de noms et d'organiser les fichiers, je les renomme une fois qu'ils sont sur mon serveur. En gardant une trace du nom de fichier d'origine, je peux communiquer avec le propriétaire du fichier sans qu'ils sachent jamais que j'ai changé le nom du fichier en arrière-plan. C'est-à-dire, jusqu'à ce qu'ils aillent télécharger le fichier. Dans ce cas, ils sont invités à télécharger un fichier avec un nom inconnu.

Ma question est la suivante : y a-t-il un moyen de spécifier le nom d'un fichier à télécharger en utilisant uniquement HTML ? Ainsi, un utilisateur télécharge un fichier nommé 'abc.txt' et je le renomme en 'xyz.txt', mais lorsque qu'ils le téléchargent, je voudrais que le navigateur enregistre le fichier sous le nom 'abc.txt' par défaut. Si cela n'est pas possible avec seulement du HTML, y a-t-il un moyen de le faire ?

0voto

Segfault Points 3311

Cela devra être fait côté serveur. Vous devrez avoir l'ancien nom de fichier dans une base de données quelque part, puis vous pourrez le déplacer vers un dossier temporaire avec le nom correct et envoyer ce fichier à l'utilisateur. TBQH je pense que vous devriez envisager d'éviter les conflits de noms avec les sous-répertoires et de stocker le chemin de chaque fichier dans votre base de données au lieu du nom ancien / nouveau.

-2voto

CuSS Points 1526

Eh bien, la réponse de @Palantir est, pour moi, la manière la plus correcte !

Si vous prévoyez de l'utiliser avec plusieurs fichiers, alors je vous suggère d'utiliser (ou d'en créer un) gestionnaire de téléchargement PHP.

MAIS, si vous voulez le faire pour un ou deux fichiers, je vous suggérerai l'option mod_rewrite :

Vous devez créer ou éditer votre fichier .htaccess sur le dossier htdocs et ajouter ceci :

RewriteEngine on 
RewriteRule ^abc\.txt$  xyz.txt

Avec ce code, les utilisateurs téléchargeront les données xyz.txt avec le nom abc.txt

NOTE : Vérifiez si vous avez déjà "RewriteEngine on" dans votre fichier, si c'est le cas, ajoutez seulement le deuxième pour chaque fichier que vous souhaitez rediriger.

Bonne chance ;) (Désolé pour mon anglais)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X