Forum CMS Made Simple FR

Version complète : [Résolu] module ou outils d'upload de fichiers
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Salut tout le monde.

Je suis à la recherche d'un module, d'une librairie JS, de n'importe quoi qui puisse m'aider à résoudre un upload de fichier simple :
* Drag&Drop
* Possibilité de spécifier dynamiquement le répertoire de destination
* Possibilité de lister les fichiers déjà présents dans le répertoire et de supprimer au besoin les fichiers.
* Paramétrage des types de fichiers autorisés
* Paramétrage du nombre de fichier (facultatif)
* Paramétrage du poids max du fichier (facultatif)

C'est en quelque sort un Ajaxplorer very-light que je cherche.

Pas d'authentification nécessaire, juste la librairie d'upload et de gestion des fichiers.

Si vous avez déjà utilisé ce genre d'outils je suis plus que preneur. Et j'ajoute que je comprend pas comment ça se fait qu'on ai pas déjà un module pour ce genre de truc, je dois pas être le premier à me gratter la tête non ?

Merci Smile
Il y a ceci qui semble remplir tes exigences : http://blueimp.github.com/jQuery-File-Upload/
effectivement je suis tombé dessus durant mes recherche. Tu l'as déjà utilisé ?

Rien concernant un éventuel module existant ?
Non, j'avais recherché pour toi :p
Citation :Rien concernant un éventuel module existant ?
gestionnaire de fichier en V cms 1.11 (en cours d'amélioration)
Oui Jce mais sera t il possible de l'utiliser également pour le front-office ? (question ouverte)

En attendant j'ai commencé à créer le module avec la librairie jQuery-File-Upload. Peut être que je travaille pour rien mais ca reste intéressant et restera utile pour faire tourner les versions de CmsMadeSimple < 1.11

mon besoin : j'ai des utilisateurs dans FEU, chaque utilisateurs peut créer entre 1 et 5 dossiers (ça c'est bon) et je veux leur laisser uploader 1 image par utilisateur (un avatar) et uploader entre 3 et 5 images par dossier, la limite du nombre d'image par dossier pouvant dépendre du groupe de l'utilisateur

Chaque upload se fait dans une hiérarchie de répertoire différents :

/uploads/FEU/sid_user/avatar
/uploads/FEU/sid_user/dossier1/
/uploads/FEU/sid_user/dossier2/
/uploads/FEU/sid_user/dossier.../

et sécurité oblige : impossible même en trafiquant le code côté client d'uplader dans le répertoire d'un autre

hey ben mine de rien c'est ultra complexe, jQuery-File-Upload n'est normalement pas prévu à cet effet (multi destination possible) mais comme il est hyper bien codé (programmation Full Objet) je pense m'en sortir.

{monModule dir='/uploads/FEU/sid_user/dossier1/' thumbnails='/uploads/FEU/thumbnails/sid_user/dossier1/'}

Si ca dit à quelqu'un de servir de cobaye d'ici la fin de semaine (j'espère, même avant)

En plus de mon cas de figure un peu spécial le module sera évidement capable de définir les types d'extensions autorisées, le nombre max d'upload dans le répertoire, la taille max, ...
Citation :mais sera t il possible de l'utiliser également pour le front-office ?
je ne pense pas
donc mon travail conserve tout son intérêt Smile
Autrement il y a le module uploads.. Je ne sais pas si cela répond à tes besoins.
J'ai testé le module Uploads : il ne gère pas l'upload vers des répertoires dynamiques, il est en fait destiné à une autre utilisation que mon besoin (1 catégorie = un répertoire, peu de dynamisme)

De mon côté, tout n'est pas encore parfait, j'ai rencontré de nombreux soucis que j'ai du contourné (notamment un bug sous Cherokee) , la suppression de fichier n'est pas encore effective (je sais pas pourquoi) et enfin aucun paramétrage n'est réellement dynamiques via l'appel du module {monmodule param='....'}.

Vous l'aurez compris : bienvenue à ma version Alpha Smile

http://www.furie.be/test-upload.html

L'adresse ne sera pas active très longtemps mais ça vous laissera jouer un peu. Ne peuvent être uploadé que les images, aucune restriction sur la quantité/poids.

Drag&Drop fonctionnel sous les browser les + récents Smile
Suppression fonctionnelle, me reste à préparer le côté dynamique avec le passage de paramètre dans l'appel du module et ce sera terminé.
Sous Opera

test 2 files l'un apres l'autre par add files :
Imagenews.jpg 3.52 KB Error SyntaxError: JSON.parse: Parsed string contains more than single value: Indice
plus.png 3.46 KB Error SyntaxError: JSON.parse: Parsed string contains more than single value: Indice
- glisser déplacer Non fonctionnel ,mais c'est connu opera est mal vu Wink

essai sous firefox

Ok en direct add files et en glisser déplacer


le delete fonctionne bien Wink
on peut même supprimer les fichiers des copains !

Nota : Pour celui qui a mis Avengers Minions.jpg : pas d'espace dans les noms de fichier
Il faut donc penser à un upload avec nom de fichier modifiable directement par le module.
https://github.com/blueimp/jQuery-File-U...er-support

La liste des fonctionnalités supportées par les navigateurs. Je sais bien que par exemple le drag&drop n'est pas supporté partout mais bon ... ça viendra et ça n'est pas bloquant. Ton erreur sous Opéra me laisse pantois... je testerais demain sous différents browser.

Le blanc dans le nom restera ainsi tout comme les accents : c'est à l'utilisateur de faire gaffe, pas à un outils d'upload de corriger toutes les erreurs. Cette position de feignant n'est que mon avis personnel Wink
On peut évidement supprimer ceux des copains puisque tout se fait dans un seul répertoire. Jeudi je préparerais le module pour être liés à différents répertoires et vous verrez qu'une instance du module ne peut agir sur les fichiers d'un autre répertoire.

C'est pratique pour faire 1 user FEU = 1 appel du module avec le SID du user, chaque utilisateur se retrouve avec son propre répertoire personnel Smile
Citation :c'est à l'utilisateur de faire gaffe, pas à un outils d'upload de corriger toutes les erreurs
Oui c'est bien ce que j'ai signalé (Pour celui qui a mis...)
Bien que il serait souhaitable de valider le nom du fichier a mon avis
Ne comporter aucun accent ni espaces, ni caractères spéciaux tel que % & / | # } pour des problèmes de liens futur
je vais voir si je peux sur-charger ce genre de contrôle dans la classe PHP de l'outils, mais je suis absolument pas certain.

Je voyais aussi d'autres options éventuellement intéressante comme le renommage systématique selon un pattern passé en paramètre, exemple heure_minute_seconde_nomDuFichier.

A voir, mais si je sais faire l'un (accent) je saurais faire l'autre.
Pour les accents, tu peux-te baser sur ceci : http://www.cmsmadesimple.fr/forum/viewtopic.php?id=3961
Citation :ce genre de contrôle dans la classe PHP

J'utlise une fonction

/**
* Fonction pour tester le nom du fichier sans caractéres spéciaux et sans espace
*/
function validname($string)
{
// test
if (preg_match ("(^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$)", $string)) {
return true;
} else {
return false;
}
}
le coder n'est pas le soucis. Placer le code au bon endroit est le vrai challenge.
Code :
[== Indéfini ==]
private function jqfu_remove_accents($str, $charset='utf-8')
    {
        $str = htmlentities($str, ENT_NOQUOTES, $charset);
        
        $str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
        $str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. '&oelig;'
        $str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
        
        return $str;
    }

    private function jqfu_clean_filename($str){
       $str = preg_replace('#[^A-za-z0-9\._\-]#', '_', $str);
       return $str;
    }


done (en local). Le premier code est issu du net, apparemment un

Code :
$str = strtr($str, 'ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝ', 'AAAAAACEEEEEIIIINOOOOOUUUUY');
$str = strtr($str, 'áàâäãåçéèêëíìîïñóòôöõúùûüýÿ', 'aaaaaaceeeeiiiinooooouuuuyy');

n'est pas une solution http://www.weirdog.com/blog/php/supprime...ntues.html

Du coup tout ce qui n'est pas lettre/numéro/underscore/point et tiret-6 sont remplacés par un underscore en live. Je penses que c'est assez sécure ainsi non ?
Faut tester Wink
je le mettrais sur mon site aujourd'hui Smile

je dois encore préparer l'utilisation des paramètres en entrée.

Par contre limitation pour cette première version : ce sera uniquement 1 appel du module par page, et uniquement sur du gabarit HTML5
bon j'ai la tête dans le guidon, pas eu le temps de m'occuper des derniers détails mais ma version est quasiment fonctionnelle au petit poil.
et 3 mois après, ma version est enfin sortie !

http://www.cmsmadesimple.fr/forum/viewtopic.php?id=4539

je clôture ici
Pages : 1 2