BoZoN - glissez, déposez, partagez !

 Voilà un bon moment que j'utilisais un sous-domaine de WDD pour bourrer avec les pieds comme un gros babouin les fichiers que je voulais mettre à disposition des visiteurs ou simplement partager...

Toujours à la recherche du minimum de clics, je m'étais juré de réfléchir vraiment à une solution qui m'évite le recours systématique à FileZilla pour partager un fichier.

Bon, ben là, je pense qu'on peut pas faire beaucoup plus simple...

 


 

Outre son logo qui claque et son nom qui roxxe du poney (*auto satisfaction dégoulinante inside *) , BoZoN sert à ça: partager simplement un ou plusieurs fichiers en un minimum de manipulations.

 

Pour être clair:

Ce que fait BoZoN:

  • espace admin protégé par mdp (auto-restrict)
  • upload de fichier par glisser déposer (via dropzone.js )
  • possibilité de supprimer un fichier en un clic depuis l'espace admin
  • vue des fichiers uploadés sous forme d'icônes & miniatures
  • lien de partage anonymisé du genre www.mondomaine.net/index.php?f=528769c0c11e7

 

Ce que BoZoN ne fait PAS:

  • gestion avancée de fichiers (gestion de l'écrasement d'un fichier, renommage, état public/privé etc)
  • gestion de sous-dossiers (pas envie de compliquer le truc pour le moment)
  • gestion de tags (pas prévu)
  • moteur de recherche dans les fichiers
  • pagination

 


Pour l'installer, rien de plus simple: copiez le dossier sur votre serveur et c'est tout ! (pas de base de données, php 5.2 min)

 

Pour ajouter des fichiers, il suffit d'aller à la page admin.php; lors de la première connexion, auto_restrict vous demandera de créer un login/passe puis, une fois connecté, il suffit de glisser les fichiers à uploader sur le header à la bordure en pointillés (on peut glisser-déposer plusieurs fichiers à la fois.)

 

On récupère le lien de partage en le copiant directement depuis la miniature/icône du fichier.

Ce lien conduit à la page index.php qui gère la demande en fonction du type de fichier:

  • les images sont simplement affichées (et on peut utiliser le lien de partage dans une balise image)
  • les txt, js, html, php sont affichés dans une balise <pre> après un htmlspecialchars (wink JJ )
  • les autres fichiers sont simplement téléchargés directement.

 

On peut aisément ajouter des types de fichiers et configurer les chemins utilisés dans la partie core.php :

    define('ID_FILE','id.txt');
    define('UPLOAD_PATH','uploads/');
    $behaviour['FILES_TO_ECHO']=array('txt','js','html','php','htm','shtml','shtm');
    $behaviour['FILES_TO_RETURN']=array('jpg','jpeg','gif','png','pdf');

 

Connexion à l'admin

 

Vue de l'espace admin

 


Copier le lien de partage

 

Par exemple, voici mon bureau, partagé via BoZoN


Vous pourrez retrouver le zip sur le dépôt Github, comme d'hab 

 

 

 

A+ et ne lâchez rien !


 

Ha ben t'es là toi ?! A vrai dire, avec l'autre con on pensait que tu étais décédé... on s'en était fait toute une joie.

 

 

 

 

 

Heu, si c'est moi "l'autre con", j'aime autant t'avouer de suite que j'apprécie que moyen... J'irai même jusqu'à confesser une certaine tendance à avoir envie de te casser la bouche...

 

 

 

 

 

Ha ben continuez comme ça et bientôt j'aurai même plus besoin d'intervenir...

❝ 45 commentaires ❞

1  Kevin le

Une fois de plus, un grand MERCI pour tout ce que tu fais ! Je vais tester ça le plus vite possible et te redirai si je vois quelque chose à changer ou corriger ;)

 
2  Bronco le

De rien Kev' c'est un plaisir...
Comme j'ai comblé un besoin pour moi, je me suis dit que ça pourrait servir à d'autres

 
3  JeromeJ le

Comment il fait trop son malin avec son bureau rangé :p non mais je vous jure !


On voit le sol et on peut compter les objets qu'on voit sur les doigts de la main? wooot !


Captcha: offf

 
4  Cristophe le

Mes premiers tests :


-1- J'ajoute l'image nommée 20131112_083021-tulle_vue_du_chandou.jpg
BoZon m'affiche toujours "Pas de fichiers uploadés". Je rafraîchis l'écran, toujours pareil. Je me déconnecte/me reconnecte, toujours pareil. Dans FileZilla, je vois que mon fichier a bien été chargé.
-2- Je renomme sur mon ordinateur la même image ainsi : test01.jpg. Je l'ajoute dans BoZon. À l'écran apparaît maintenant deux images, 20131112_083021-tulle_vue_du_chandou.jpg et test01.jpg.
-3- Je supprime dans BoZon 20131112_083021-tulle_vue_du_chandou.jpg . BoZon affiche "Pas de fichiers uploadés".
-4- J'ajoute à nouveau dans BoZon 20131112_083021-tulle_vue_du_chandou.jpg . S'affiche alors les deux images.

 
5  Cristophe le

Premiers tests, suite :


Dans l'administration de BoZon, les images apparaissent sous forme de carrés blancs.

 
6  jvoisin le

Ce serait sympa d'aérer un peu le code, qui n'est pas super-lisible :/

 
7  fpp le

Super sympa ! (merci sebsauvage
J'ai juste un problème (sans doute lié à mon hébergeur ?...):
Quand j'envoie une image, elle n'apparaît pas immédiatement, et au rafraîchissement j'ai l'erreur suivante au milieu de la liste des fichiers :
Warning: imagepng() [function.imagepng]: Unable to open 'thumbs/domtom_THUMB__64x64.jpg' for writing: No such file or directory in (...)/listfiles.php on line 48


Il doit manquer une lib dans le PHP du site ?...

 
8  fpp le

Edit: peut-être le même souci que Christophe...

 
9  fpp le

Re:
Sur ma machine perso je n'ai pas l'erreur mais la vignette est blanche également.


Sinon chez l'hébergeur j'ai aussi dû rajouter un ini_set('session.save_path', '...'); mais ça j'ai l'habitude

 
10  Eownis le

Salut, pour l'erreur lié à imagepng()… j'ai du rajouté un dossier "thumbs" à la racine du site (et maintenant les miniatures marchent du coup)

 
11  Bronco le

Oui: mea culpa, j'ai oublié de créer automatiquement le dossier thumbs ! (ça m'a traversé l'esprit et puis je suis passé à autre chose)
Je corrigerai ça dans la prochaine version. Merci pour le retour !


@jvoisin: pas faux

 
12  jerrywham le

@JeromeJ : il a quand même essayé de faire le type normal en laissant quelques déchets dans sa poubelle qu'il n'a pas vidée.
Mais c'est vrai qu'il se la pète avec son double écran...


Sinon, merci Bronco. Je vais tester ça et je reviens vers toi.

 
13  Bronco le

Bon, j'ai ajouté la création du dossier thumbs lors de la première utilisation... Tenez-moi au courant

 
14  fpp le

Ah ben oui, c'est tout de suite mieux, ça marche même sur l'hébergé du coup, j'ai été mauvaise langue
Merci !

 
15  PetitEtreMalfaisant le

Sources téléchargées depuis github
je drag & drop une image.
pas de message d'erreur
le fichier est bien dans upload
le dossier thumbs bien créé.
pas de miniature et mais "Pas de fichiers uploadés..."

 
16  Bronco le

Curieux... peut-être un blème de droits sur les dossiers ?
Quel est ton hébergeur ? la taille du fichier ?

 
17  Ashemsay le

Bravo pour ton boulot, c'est propre, simple et efficace.


Juste un petit souci, le premier fichier uploadé n'est jamais affiché : J'upload un fichier, il n'est pas affiché; j'en ajoute un, les deux sont affichés. j'en supprime un, et de nouveau plus rien ne s'affiche. Problème d'index quelque part j'imagine?

 
18  Bronco le

Merci beaucoup
Je vais me pencher sur le bug du premier fichier, merci !

 
19  Bronco le

Bon, j'ai trouvé d'où venait le bug: lors de la création des sous-dossiers, je ne créais pas les fichiers index.html à mettre dedans alors que je prenais implicitement en compte celui du dossier uploads dans le test count($liste)>1
J'ai commit la version corrigée, DSL


A+ les copains !

 
20  Ashemsay le

Petit oubli aussi au niveau du calcul des tailles de fichiers, manque une division

 
21  Bronco le

oui, je me faisais la même réflexion en uploadant un fichier video
J'y songerai pour la prochaine MAJ ;)

 
22  Erwan18 le

Bonsoir,


Quand j'appelle BoZoN avec admin.php j'ai cette erreur :
" Warning : session_start() function.session-start : Cannot send session cookie - headers already sent by (output started at /BoZoN/auto_restrict.php:1) in /BoZoN/auto_restrict.php on line 17 "
avec Opera et Firefox (je suis hébergé chez Online.fr, mais chez Free c'est pareil).
J'ai désactivé AdBlock Plus et Ghostery, sans succès.
As-tu une idée du pourquoi ?


A+

 
23  PetitEtreMalfaisant le

Avec la dernière version, ça fonctionne <img class='smile' src='http://warriordudimanche.net/vrac/warriorsmiles/content.jpg&#039; title=' ou ' alt='smiley' />
Merci en tout cas, beau boulot.

 
24  Bronco le

@Erwan18: c'est curieux; les erreurs de ce type sont dues au fait que la session ne peut être démarrée si on a déjà affiché une partie de la page...
Je ne pense pas que ça vienne de ton hébergeur et ce n'est pas ton navigateur.
As-tu modifié le script ?
Je regarde de mon côté si j'ai pas laissé traîner un espace quelque part (typique de ce genre de bug)

 
25  Tiger-222 le

Ah génial ! J'avais justement commencé un truc dans le même genre, tu m'as devancé, et en mieux :)
Merci, tu gères !

 
26  Bronco le

De rien, c'est un plaisir ;)

 
27  Erwan18 le

@Bronco : non, aucune modification ; dézippage, transfert sur mon site (chez Online.fr) et appel, avec 2 navigateurs...
Je viens d'essayer d'afficher "/BoZoN/admin" au taf avec l'antique IE8 obligatoire, c'est pareil, j'ai cette erreur (2 fois) :


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /BoZoN/auto_restrict.php:1) in /BoZoN/auto_restrict.php on line 17

 
28  Erwan18 le

J'utilise FileZilla pour les transferts, est-ce que ça pourrait venir de lui ? Ce soir je vérifierai le type de transfert (Ascii/binaire)...

 
29  Bronco le

Si tu veux, passe -moi l'adresse de ton bozon via le formulaire de contact du site et j'irai jeter un oeil...
Je ne rejette à priori aucune explication mais Filezilla me semble hors de cause en l'occurrence.

 
30  Nono le

Petite note : J'avais oublié de donner les droits d'écriture pour le dossier parent ... Tout était accessible, mais impossible de créer le login/pass.


Un message d'erreur aurait été sympa


Sinon, ca marche au poil :) Merci

 
31  euclide24 le

Bonjour.
Merci pour ce programme, pratique et simple !
Pour info, je rencontre les même messages d'erreur qu'Erwan.
Ils n'empêchent pas le fonctionnement du système, mais je suis quand même intéressé par une solution...

 
32  Bronco le

@Nono: en effet, j'ai un peu omis l'aspect user friendly dans les erreurs, dsl
sans doute faudrait-il un message d'avertissement lors de la première connexion, voire une procédure automatique qui change les droits... je me note ça en todo ;)


@Euclide24: De rien !
Je continue à chercher, mais je ne vois pas d'où ça vient pour le moment...

 
33  euclide24 le

Re-bonjour.


@Erwan18 et @Bronco
Concernant le message « Warning: session_start() [function.session-start] ...»


J'ai peut-être trouvé une solution sur le site :
http://www.commentcamarche.net/forum/affich-1531776-session-start-et-header


Je ne maîtrise pas du tout, mais il semble que ce soit une histoire de caractère BOM dans le fichier auto_restrict.php


Dans ce fichier, j'ai enlevé le 1er caractère de <?php, qui se trouve au début du fichier, effacé les caractères à gauche même si j'avais l'impression de ne rien effacer, puis avec l'éditeur Kwrite (je suis sous Linux), j'ai enregistré les modifs en décochant la case « Ajouter une marque d'ordre d'octet (BOM) ».


Je n'ai plus les messages d'erreur pour l'instant...

 
34  Bronco le

Argh ! Pourquoi n'y ai-je pas pensé !? mais oui, c'est l'encodage !
Je reup une version corrigée dans un moment !
bien vu !

 
35  Erwan18 le

Bien vu Euclide24, merci

 
36  euclide24 le

De rien, Erwan18
Bien peu de choses par rapport au boulot de Bronco !

 
37  Erwan18 le

Merci Bronco, ça marche beaucoup mieux et c'est plus joli sans les messages d'erreur ;-)

 
38  Bronco le

De rien ;-) ça fait plaisir de voir que l'appli est utilisée

 
39  Juh le

Salut BRONCO


Merci beaucoup pour tes applications web, elles sont tip top et bien pratique. Je te fais part de mes retours et des soucis que je rencontre :


J'ai une petite erreur lors de ma première utilisation de Bozon :
Warning: gzinflate() data error in core.php on line 18
Une fois un fichier envoyé, l'erreur disparaît.


De même j'ai eu des soucis avec cette image lors de l'upload : http://nibreh.legtux.org/bozon/index.php?f=5298953e0c1fa


des erreurs en rapport avec les lignes 31 et 47 du fichier listfiles.php - en fait je crois que c'est la miniature qui a du mal (j'ai un carré noir dans la partie admin)


J'ai aussi des soucis avec googol mais c'est peut-être pas le bon endroit :) mais je vais te le dire quand même : juste que la recherche des images ne donne rien ... pas de résultat .. j'avais eu pareil avec la recherche "web", puis j'ai mis en ligne une version plus récente de googol et c'était corrigé, sauf que maintenant bah c'est les images .. à tester ici : http://nibreh.legtux.org/googol/googol.php


Je suis chez legtux.


voilà concernant mes retours ! Si ça peut être utile pour la suite !


au plaisir et merci encore - JUH

 
40  Bronco le

Merci pour les retours: ils sont toujours très importants pour suivre une app
Pour ce qui est de Googol, c'est sans doute la regex des images qui doit être adaptée: google change parfois la structure de sa page et il faut alors adapter la regex qui parse ladite page... Je vais jeter un oeil ce soir. Je mettrai le dépôt à jour asap.


Pour bozon, je n'ai pas eu cette erreur, mais je vais tester ça...
si tu peux me faire une capture d'écran ou un copier coller du message d'erreur, je prends


L'erreur est-elle systématique (toutes les images) ou bien seulement sur une ?
Si c'est sur une seule, est-ce que l'erreur réapparaît si tu ré uploade la même image ?


L'erreur du fichier core est sans doute due à la tentative de charger et décompresser un fichier vide... il suffirait d'inhiber l'erreur ou bien de la gérer en amont de la fonction unstore ou dans la fonction elle-même... je me le note dans la todo ;)
Merci encore

 
41  Juh le

YO - re


Pour googol, j'ai pas tout compris mais j'ai pigé la logique ;)


Pour l'image, il s'agit d'une seule image (c'est en testant avec ce que j'avais sous la main) à savoir celle-ci :


nibreh.legtux.org/upload/files/laptop.jpg


Elle pèse bien lourd (5Mo) et sa résolution est de 1959x2151 - Elle possède un fond transparent (j'ai vérifié avec Gimp) et peut-être bien que c'est ça qui pose problème.


L'erreur ne se produit qu'une fois, à ma première utilisation de Bonzo : j'upload l'image, j'obtiens l'erreur. Je me reconnecte, je supprime l'image, je l'upload à nouveau : pas d'erreur mais toujours une miniature noire. A part ça, l'image est correctement envoyé et accessible sur le web.


Voici la capture d'écran après une installation toute fraiche de Bonzo :


http://nibreh.legtux.org/upload/files/erreur_bonzo.jpg


(au passage, en haut sur le fond noir y'a l'erreur gzinflate, pas très lisible)

 
42  Bronco le

@Juh :
Ok j'ai pigé le problème de ton image: ce n'est pas une image jpg, mais une png... Du coup, php cherche à la traiter en jpg et se plante
En effet, le jpg ne gère pas le fond transparent... c'est une simple erreur de nommage ! (ouf !)
Comme le navigateur s'en accommode, il ne fait pas de truc bizarre.
Quand au second upload, il se passe sans erreur parce que php a déjà généré une miniature (noire, mais elle existe) et il ne la régénère donc pas... donc pas d'erreur à la seconde tentative.


Je pense qu'en renommant ton fichier en .png, ça résoudra le problème

 
43  Juh le

@Bronco


C'est bien ça ! Tout roule à l'upload, et la miniature est ok. Je me doutais bien que ça venait de l'image, et du même coup j'apprends que le jpg ne gère pas le fond transparent.


Merci Bronco - navré pour le coup de flippe !

 
44  Bronco le

Pas de soucis

 
45  JulietteCato16 le

Je vous remercie vraiment pour cet article, cela tombe bien pour moi !

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

les commentaires relevant du SPAM seront filtrés et dégagés direct...

Quelle est le deuxième caractère du mot i6a8ef ?