Manipulation de fichiers zip

Bonjour, pour une galerie d’images, existe-t’il un plugin qui permette
d’uploader un fichier zip contenant x images et des le décompresser sur
le serveur et de sauver les images dans l’arborescence ?
Sinon, voyez-vous une autre solution ?

Samuel

–Le mardi 18 juillet 2006 19:07 +0200, Samuel écrivait :

Bonjour, pour une galerie d’images, existe-t’il un plugin qui permette
d’uploader un fichier zip contenant x images et des le décompresser sur
le serveur et de sauver les images dans l’arborescence ?
Sinon, voyez-vous une autre solution ?

Samuel

Pas de plugin a ma connaissance, une recherche rapide
renvoie surtout des plugins de compression des réponses du Serveur
( http://agilewebdevelopment.com/plugins/search?search=zip )

En revanche il y a des modules pour ruby qui devraient notamment te
permettre de gérer la décompression, par ex. “Zlib::Inflate”.

Et pour l’envoi de fichier, un petit saut page 386 dans le bouquin VF de
ROR, c’est expliqué :slight_smile:

Question tres interessante !

Je suis en train de developper un plugin denomme “acts_as_file” qui va
servir a gerer de maniere vraiment flexible l’upload de fichiers:

  • validation suivant les mime-types ou des types predetermines
    “built-in”
    (video qui regroupe la liste des mime-types associes aux fichiers
    videos),
  • ajout de post-processing => creation de thumbnails, generation de pdf
    …etc
  • … etc…
  • ET gestion des fichiers compresses => en gros, tu uploades un fichier
    zip
    en precisant quel type de batch tu utilises (parametrable evidemment,
    ex: tu
    ne veux que des jpeg…) et lui se charge de creer les “objets”
    adequats
    (qui ont la propriete acts_as_list)

En parallele, je pense aussi a un plugin qui sera lie au precedent:
has_many_files: en gros, tu as une liste triee de fichiers que tu peux
manipuler a ta guise avec les helpers qui vont avec !

Pour le moment, seul le plugin acts_as_file fonctionne. Je n’ai pas de
date
precise quand a ma premiere release mais en gros, je pense que la
semaine
prochaine, cela devrait etre package + teste et documente.

Quant au plugin “batch”, il faut que je me renseigne sur comment
dezipper un
zip en ruby, mais voici comment cela devrait fonctionner avec mon
systeme
(tout ceci n’est que de la theorie mais quelques parties devraient
t’interesser):
preambule: toute classe qui possede acts_as_file doit s’enregistrer
aupres
du BatchManager grace la methode register_for_batch

  • upload du zip
  • dans le controller associe, tu appelles la methode de classe unzip
    associe
    a ton objet batch (GalleryImageBatch::unzip(upload_field)). au passage,
    tu
    as parametre ton objet batch pour qu’il n’accepte que des fichiers de
    type
    image.
  • la methode unzip enregistre le fichier dans un repertoire temporaire
    (dont
    le nom est unique pour chaque upload) sur le serveur
  • dezippage du fichier
  • parcours du dossier (recursif pour les sous-repertoires) pour
    recuperer
    tous les fichiers presents dans l’archive
  • pour chaque fichier, creer un objet en fonction du mime-type (on sait
    faire la relation entre un mime-type et un objet car celui-ci s’est au
    prealable enregistre grace a register_for_batch), deplacer le fichier
    vers
    le repertoire final (du genre RAILS_ROOT/public/uploaded)
  • suppression du repertoire temporaire.

Parce ce que cela peut prendre du temps, je pense qu’il faudrait
utiliser
UploadProgressHelper plugin (upload en utilsant ajax pour prevenir
l’utilisateur de la progression) pour notifier l’utilisateur que le
serveur
ne dort pas !

J’espere que cela t’aidera (un petit peu) mais n’hesite pas a me mailler
si
tu bloques sur un point.

Did

2006/7/18, Samuel [email protected]:

Je suis en train de developper un plugin denomme “acts_as_file” qui va
servir a gerer de maniere vraiment flexible l’upload de fichiers:

  • validation suivant les mime-types ou des types predetermines
    “built-in” (video qui regroupe la liste des mime-types associes aux
    fichiers videos),
  • ajout de post-processing => creation de thumbnails, generation de pdf
    …etc

Très intéressant en tout cas, penses tu le relier à ImageMagik comme le
fait file_column pour les thumbnails ?
tiens nous au courant

On Jul 18, 2006, at 20:38 PM, didier lafforgue wrote:

au depart, je voulais faire un truc simple, c’est a l’utilisateur
final de faire ses choix pour le post-traitement (thumbnail) et
puis finalement je me suis dit que cela serait pas plus mal de
livrer des modeles deja tout fait.
Donc oui, je le livrerai mon modele FileImage (qui est juste un
simple objet: title, description, thumbnail_url, width, height +
ACTS_AS_FILE avec un post-processing qui genere le thumbnail).

Je vous tiens au courant, promis !!!

Salut Didier,

Quelle est la différence entre ton plugin et acts_as_attachment de
Technoweenie ?? à première ça me semble vraiment similaire mais je me
trompe peut-être.

http://technoweenie.stikipad.com/plugins/show/Acts+as+Attachment

Richard


http://www.railsfrance.org/
http://paris.onrails.info/

au depart, je voulais faire un truc simple, c’est a l’utilisateur final
de
faire ses choix pour le post-traitement (thumbnail) et puis finalement
je me
suis dit que cela serait pas plus mal de livrer des modeles deja tout
fait.
Donc oui, je le livrerai mon modele FileImage (qui est juste un simple
objet: title, description, thumbnail_url, width, height + ACTS_AS_FILE
avec
un post-processing qui genere le thumbnail).

Je vous tiens au courant, promis !!!

Le 18/07/06, Zambra [email protected] a écrit :

Merci Richard pour le lien.

Je viens de regarder ce plugin avec attention (pas facile car il n’y a
pas
de docs utilisateur). Il est tres oriente manipulation d’image avec
RMagick
(tres bonne integration).
Il y a effectivement un systeme callbacks (post-processing) mais je ne
vois
point de validation (a mon avis, le gars peut le rajouter facilement, en
1
journee c’est plie).
J’ai vu aussi qu’il fallait patcher son model en lui rajoutant 2 ou 3
champs. C’est un peu ennuyeux a mon avis. Mon plugin utilise le
polymorphisme ce qui evite de toucher aux tables deja existantes.
Autre chose, cela peut paraitre con mais comment je fais, si je veux que
mon
fichier uploade ne soit pas “public” (en gros, je veux le stocker dans
un
repertoire autre RAILS_ROOT/public) sans toucher au code du plugin ?

Attention, je ne dis pas que mon plugin est mieux (le gars qui a code
act_as_attchement a un sacre niveau et il utilise super bien RMagick).
Je
l’ai designe pour qu’il puisse se greffer sur mes projets deja existants
sans tout demolir et surtout remplir un des criteres fondementaux a mon
avis: la VALIDATION :wink:

Ce qui est cool, c’est que les debutants auront l’embarras du choix !!!

Didier

Le 18/07/06, Richard P. [email protected] a écrit :

J’ai vu aussi qu’il fallait patcher son model en lui rajoutant 2 ou
3 champs. C’est un peu ennuyeux a mon avis. Mon plugin utilise le
polymorphisme ce qui evite de toucher aux tables deja existantes.

En ce qui me concerne j’ai un modèle spécifique pour gérer les
attachments, je préfère ça plutôt que de rajouter des champs à un
modèle existant car en effet ça peut être ennuyeux.

Autre chose, cela peut paraitre con mais comment je fais, si je
veux que mon fichier uploade ne soit pas “public” (en gros, je veux
le stocker dans un repertoire autre RAILS_ROOT/public) sans toucher
au code du plugin ?

acts_as_attachment :storage => :file_system, :file_system_path =>
‘ton/path’

si tu n’as pas besoin de stocker ailleurs que sous RAILS_ROOT c’est
bon sinon c’est une ligne à modifier dans le code :

options[:file_system_path] = options[:file_system_path][1…-1] if
options[:file_system_path].first == ‘/’

d’ailleurs ça pourrait être une option intéressante à rajouter au
plugin, genre ‘:force_relative_path’

Attention, je ne dis pas que mon plugin est mieux (le gars qui a
code act_as_attchement a un sacre niveau et il utilise super bien
RMagick).

oui Technoweenie c’est Rick O. du core-team Rails, il est plutôt
doué le garçon :wink:

Ce qui est cool, c’est que les debutants auront l’embarras du
choix !!!

Néanmoins il faudra leur expliquer les pros et cons de chacun des
plugins, mais bon au moins sur le tien ils pourront poser des
questions directement en français ! :wink:

Richard


http://www.railsfrance.org/
http://paris.onrails.info/

Bruno Z. a écrit :

Pas de plugin a ma connaissance, une recherche rapide
renvoie surtout des plugins de compression des réponses du Serveur
( http://agilewebdevelopment.com/plugins/search?search=zip )

En revanche il y a des modules pour ruby qui devraient notamment te
permettre de gérer la décompression, par ex. “Zlib::Inflate”.

Et pour l’envoi de fichier, un petit saut page 386 dans le bouquin VF de
ROR, c’est expliqué :slight_smile:

effectivement #apt-get install libzip-ruby1.8 m’installe le plugin ruby
qui gère les fichiers zip…
reste a me documenter la dessus.

Samuel

acts_as_attachment :storage => :file_system, :file_system_path =>

‘ton/path’

si tu n’as pas besoin de stocker ailleurs que sous RAILS_ROOT c’est
bon sinon c’est une ligne à modifier dans le code :

options[:file_system_path] = options[:file_system_path][1…-1] if
options[:file_system_path].first == ‘/’

d’ailleurs ça pourrait être une option intéressante à rajouter au
plugin, genre ‘:force_relative_path’

c’est vrai que c’est un peu complique chez moi (quoique): soit tu
renseignes
relative_url (si tu veux qu’il soit sous RAILS_ROOT/public) ou bien
server_path (si tu veux le mettre a un endroit plus precis sur le
serveur).
J’aime bien ton idee de force_relative_path (je pense que je vais
changer
mon systeme ce soir.

oui Technoweenie c’est Rick O. du core-team Rails, il est plutôt
doué le garçon :wink:

Ou la boulette ! Oui effectivement on ne boxe pas dans la meme
categories
comme qui dirait l’autre.

Ce qui est cool, c’est que les debutants auront l’embarras du

choix !!!

Néanmoins il faudra leur expliquer les pros et cons de chacun des
plugins, mais bon au moins sur le tien ils pourront poser des
questions directement en français ! :wink:

En fait mon plugin s’integre dans un systeme plus global qui permettra
de
gerer les collection de fichiers, le zip, …etc. C’est pour cela par
exemple que je n’integre pas RMagick dans acts_as_file.

Sinon je te remercie pour tes (precieux) conseils et j’encourage tout le
monde a en faire autant pour que le plugin essaye de matcher avec les
attentes de tous (oula je suis ambitieux sur ce coup !).

Richard

Vivement la semaine prochaine qu’on puisse beta-tester act_as_file alors
!

Samuel

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs