Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-05-2011 00:44:45

devlop78
Membre
Date d'inscription: 19-05-2011
Messages: 13

Zend_Form_Element_File

Bonjour à tous,

J'ai été surpris en testant l'élément fichier de Form. Malheureusement, pas en bien. L'affichage est parfait, mais je me retrouve avec un fichier renommé dans un dossier que j'ai donné. J'ai peu d'expérience avec le transfert de fichiers.

Cela dit, je pensais et je pense toujours, et ma façon actuelle de voir les choses est d'avoir dans un dossier temporaire "modéré" par un garbage collector ou à la fin du script, les fichiers avec un nom unique et sans collision qui viennent d'être téléchargés. Seulement lorsque je le souhaite, je vais les transférer dans un dossier et avec un nom qui dépendra de pas mal de choses.

Mon idée est :

-> Les validateurs vérifient que le fichier a la bonne extension, qu'il n'y en a qu'un, qu'il fait moins de x octets, etc
-> Je lance une transaction
-> Je crée une entrée dans ma base de données avec le nom que je donnerai à mon fichier.
-> Je déplace et renomme mon fichier
-> Je valide

En cas d'erreur avec l'ajout d'entrée dans la base de données, je fais un rollback() et le fichier n'est pas déplacé.

Voilà Comment je vois les choses, et c'est la méthode que j'utilise avec succès (pour le moment wink ) sur une de mes applications intranet.

Elle me permet plusieurs choses :
- Si deux fichiers téléchargés par le même client en même temps portent le même nom, il n'y a pas collision
-> Si 60 000 clients différents téléchargent des fichiers "en même temps", il n'y a pas collision, et pas d'échange de fichiers (le client A ne se retrouve pas avec le fichier du client B).

Cependant, je n'ai pas trouvé comment régler cela avec Zend_Form_Element_File. Le fichier est renommé et n'est plus supprimé automatiquement à la fin du script. Si j'ai dans le même formulaire deux champs File, et que je télécharge deux fichiers de même nom, je n'en obtiens qu'un au final. Pareil si plusieurs clients (navigateurs) téléchargent des fichiers de même nom en même temps.

Questions :

-> Ma méthode n'est peut-être pas bonne ou n'est pas dans la logique de Zend. Comment faire alors pour respecter les règles de non collisions, et d'ACID pour un enregistrement de l'adresse finale en bdd ?
-> Peut-on lui demandé de ne pas le déplacer, de ne pas le renommer, juste le valider ? J'ai vu hier en cherchant le filtre "rename", mais les exemples ne semblent pas le destiner à un Non renommage.

Merci par avance.

Cordialement

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages