IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload fichier avec conservation du nom


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Points : 74
    Points
    74
    Par défaut Upload fichier avec conservation du nom
    Bonjour,

    J'ai une appli avec une classe pour l'upload de fichier. Celle-ci modifiait le nom du fichier uploader de manière à avoir un nom "propre", nettoyé de tous les caractères qui pouvaient poser problème.

    Mais aujourd'hui j'ai une nouvelle problématique : mon appli stock des fichiers qui comportent des liens de dépendance vers d'autres.

    Exemple non contractuel:
    1 fichier excel s'appel main.xls, et il contient des liens vers 3 autres fichiers excel : "child(1).xls", "child#2.xls" et "child 3.xls."

    Forcément, la modification du nom lors de l'upload à pour cause de casser ces liens. (Aucune négociation possible sur le fait de mettre à jour main.xls avec les nouveaux liens).
    L'utilisation d'un fichier compressé n'est pas envisageable non plus.

    Petit avantage (ou pas?), la classe qui upload le fichier stock le nom "propre" dans la base de données et range le fichier dans un file système ou le fichier est renommé en : son_id.son_extension.

    Les caractères spéciaux auquel je peux avoir à faire sont de toutes natures, mathématique, linguistique étrangère...

    Avez-vous en tête un mécanisme, un outil ou une librairie qui pourrait répondre à ce genre de problème?

    D'avance merci pour vos propositions.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux tout à fait garder le fichier sous son faux nom sur ton serveur et le refournir à l'utilisateur avec son vrai nom ensuite.
    Il faut éliminer les / \et ..

  3. #3
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Mais je ne comprend pas bien le / \et... C'est justement ça qui me pose problème.
    Je supprimais les caractères spéciaux car ils me causent des problèmes ensuite pour les traitements : Liens, déplacement, erreur lors de l'upload.
    Par exemple l'espace dans le nom de fichier, pour les liens de téléchargement, ou les * lors que je fais des opérations comme mv, rename, zip...

    Le but était d'avoir une classe qui permette de gérer l'upload sans changer le nom et de pouvoir restituer le fichier avec son nom d'origine. En sachant qu'entre 2 il est renommé.

    Sinon je vais devoir traiter chaque caractère spéciaux à l'endroit ou il pose problème. Ce qui peut être laborieux.

    Encore merci pour ton aide.

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    la différente entre / et \ réside dans l'arborescence utilisé. sur du local ton fichier sera c:\truc\machin.txt alors que sur ton site il ser ../truc/machin.txt

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    je complète :
    Pour une question de portabilité du code entre plateformes, le séparateur des répertoires dans un chemin (en local donc) ne devra jamais être codé en dur : Windwos: \ et Linux: /
    Il faut toujours utiliser la constante PHP : DIRECTORY_SEPARATOR

  6. #6
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 99
    Points : 74
    Points
    74
    Par défaut
    Merci pour vos réponses,

    Mais le problème ne se situe pas là.
    Les liens dont je parle sont internes aux fichiers (Binaires de CAO), il ne prennent pas le chemin en compte, uniquement les noms de fichiers, apriori dans le même répertoire.
    Le travail local est effectué majoritairement sur Windows, mais il reste des stations Unix (Solaris 8), seul le serveur est sous linux.

    Nous recevons des fichiers CAO de partout et de n'importe quel environnement. (Windows, Unix, BSD, linux...). Du coup, lors de l'upload le nom de fichier peut avoir des formats vraiment pas catholique, typiquement sous linux je peux avoir un nom de fichier avec des * qui ne soit pas reconnu par l'explorateur Windows.

    Mais dans tous les cas, je dois réussir à garder le nom original du fichier, quelque soit sont origine (Caractères Chinois ou Arabe compris).

    Dans un premier temps je m'étais simplifié la tache avec des regex pour ne conserver que des caractères de l'alphabet latin basique. En fait, si un caractère n'appartenait pas à une liste autorisé, il était remplacé par un joker.

    Mais ce remplacement, ne permet pas de conserver les liens entre fichiers...
    C'est pour cela que je recherchais une classe qui gère déjà ce genre de mécanisme.

    PS: Est-ce normal que je ne recoive pas de notification par email lors d'ajout de réponse alors que dans les outils de discussion j'ai la ligne: se désabonner de ce sujet ?

Discussions similaires

  1. Upload fichiers avec Applet vers serveur Asp .net
    Par rouliow dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/05/2008, 17h47
  2. upload fichier avec flash
    Par escteban dans le forum Flash
    Réponses: 2
    Dernier message: 13/04/2007, 13h10
  3. Réponses: 6
    Dernier message: 13/12/2006, 11h31
  4. [Upload] upload fichiers avec multiple submit
    Par dolf13 dans le forum Langage
    Réponses: 17
    Dernier message: 06/06/2006, 01h20
  5. [AJAX] upload fichiers avec AJAX
    Par jibouze dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/12/2005, 21h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo