FM est un gestionnaire de fichiers open source publié sous licence MIT. C'est une alternative à elfinder ou CKFinder.
IMPORTANT : ce package est obsolète .
Maintenant, veuillez utiliser le package RichFileManager avec un certain nombre de nouvelles fonctionnalités et améliorations.
Filemanager est sous licence gratuite. Si vous souhaitez soutenir le développement de filemanager ou simplement remercier son mainteneur principal en payant une bière, vous pouvez faire un don en cliquant sur le bouton suivant :
Filemanager est très documenté sur les pages wiki. API, voir ci-dessous.
Préambule
De nombreux changements ayant été effectués récemment, seuls les connecteurs PHP et MVC sont désormais disponibles. Vous pouvez essayer la dernière version pour d'autres connecteurs, mais sans aucune garantie, ils implémentent toutes les fonctionnalités et fonctionnent correctement.
Pour utiliser d'autres connecteurs, veuillez télécharger la version v0.8 depuis https://github.com/simogeo/Filemanager/archive/v0.8.zip (les connecteurs PHP, ASHX, ASP, CFM, lasso, PL et JSP sont disponibles)
Une implémentation du connecteur JSP/Java est disponible sur : https://github.com/th-schwarz/C5Connector.Java
(1) Extrayez une copie du FileManager du référentiel en utilisant Git :
clone git http://github.com/simogeo/Filemanager.git
ou téléchargez l'archive depuis Github : https://github.com/simogeo/Filemanager/archive/master.zip
Vous pouvez placer le FileManager n'importe où dans le répertoire racine de votre service Web.
(2) Faites une copie du fichier de configuration par défaut ("filemanager.config.default.json" situé dans le répertoire des scripts), en supprimant le ".default" à la fin du nom de fichier, et modifiez les options selon le wiki suivant page : https://github.com/simogeo/Filemanager/wiki/Filemanager-configuration-file Avoir un oeil sur l'étude de cas de configuration peut également vous être utile : https://github.com/simogeo/Filemanager/wiki/Specify-user-folder%2C-configuration-cases
(3a) Si vous intégrez FileManager avec FCKEditor, ouvrez votre fichier fckconfig.js et recherchez les lignes qui spécifient le navigateur de fichiers à utiliser pour les images, les liens, etc. Regardez vers le bas du fichier. Vous devrez modifier des lignes comme celle-ci :
FCKConfig . ImageBrowser = false ;
FCKConfig . ImageBrowserURL = FCKConfig . BasePath + 'filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/' + _FileBrowserLanguage + '/connector.' + _FileBrowserExtension ;
...à ceci :
FCKConfig . ImageBrowser = true ;
FCKConfig . ImageBrowserURL = '[Path to Filemanager]/index.html' ;
(3b) Si vous intégrez FileManager avec CKEditor 3.x ou supérieur, définissez simplement l'URL lorsque vous configurez votre instance, comme ceci :
CKEDITOR . replace ( 'instancename' , {
filebrowserBrowseUrl : '[Path to Filemanager]/index.html' ,
... other configuration options . . .
} ) ;
Si vous souhaitez utiliser le mode de dialogue modal (au lieu du pop-up), veuillez vous référer à la page wiki dédiée.
(3c) Si vous intégrez FileManager à TinyMCE (>= 3.0), vous devez :
Créez une fonction de rappel Javascript qui ouvrira la page de base FileManager index.html (voir l'URL ci-dessous pour des exemples) Ajoutez une ligne comme : "file_browser_callback : 'name_of_callback_function'" dans la commande tinyMCE.init Voir http://www.tinymce.com /wiki.php/TinyMCE3x:How-to_implement_a_custom_file_browser pour plus de détails.
Voir aussi la page wiki dédiée, avec un exemple TinyMCE 4 : https://github.com/simogeo/Filemanager/wiki/How-to-use-the-Filemanager-with-tinyMCE-3-or-4
(4) Enfin et surtout, souciez-vous de la sécurité !
Pour le connecteur PHP : copiez/collez le /connectors/php/default.config.php
dans /connectors/php/user.config.php
pour définir votre propre fonction d'authentification. Pour cela, vous trouverez un exemple sur la page wiki dédiée.
Dépendance et compatibilité jQuery
Nous essayons de continuer à mettre à jour régulièrement la bibliothèque principale jQuery. Si, pour une raison quelconque, vous ne pouvez pas utiliser la version jQuery intégrée pour le moment, le gestionnaire de fichiers fonctionnera probablement avec une version jQuery >= 1.6. Vous devrez utiliser le plugin jQuery.migrate() pour l'utiliser avec jQuery version 1.9+.
Important : Le Filemanager est conçu pour fonctionner sans aucune configuration particulière mais son utilisation sans aucune configuration est TRÈS dangereuse . Veuillez configurer votre propre fonction d'authentification , basée sur le fichier par défaut et en vous référant à la page wiki dédiée.
Vous pouvez créer un connecteur pour la langue de votre choix côté serveur en suivant cette API simple. Vous devez disposer d'un script à l'emplacement suivant qui peut répondre aux requêtes HTTP GET en renvoyant un objet JSON approprié :
[path to FileManager]/connectors/[language extension]/filemanager.[language extension]
FileManager inclut actuellement des connecteurs pour PHP, MVC, JSP, lasso, ASP, ASHX, PL et CFM aux emplacements suivants :
PHP: .../connectors/php/filemanager.php
ASP.NET MVC Framework .../connectors/mvc/FilemanagerController.cs
JSP: .../connectors/jsp/filemanager.jsp
lasso: .../connectors/lasso/filemanager.lasso
ASP: .../connectors/asp/filemanager.asp
ASHX: .../connectors/ashx/filemanager.asp
PL: .../connectors/pl/filemanager.pl
CFM: .../connectors/cfm/filemanager.cfm
Tant qu'un script existe à cet emplacement pour répondre aux demandes, vous pouvez diviser le code (bibliothèques externes, fichiers de configuration, etc.) comme bon vous semble.
Chaque réponse doit inclure deux clés spécifiques à la gestion des erreurs : Erreur et Code. Si une erreur se produit dans votre script, vous pouvez remplir ces clés avec les valeurs que vous jugez les plus appropriées. S'il n'y a pas d'erreur, Error doit rester vide ou nul et Code doit être vide, nul ou zéro (0). N'utilisez pas zéro pour les erreurs réelles. L'exemple suivant constitue une réponse appropriée si le connecteur utilise un fichier externe pour la configuration (recommandé), mais que ce fichier est introuvable :
{
"Error" : " Configuration file missing. " ,
"Code" : -1
}
Votre script doit inclure la prise en charge des méthodes/fonctions suivantes. Les requêtes GET de FileManager incluent un paramètre "mode" qui indiquera quel type de réponse renvoyer. Des paramètres supplémentaires fourniront d'autres informations nécessaires pour répondre à la demande, telles que le répertoire actuel.
La méthode getinfo
renvoie des informations sur un seul fichier. Les requêtes avec le mode « getinfo » incluront un paramètre supplémentaire, « path », indiquant quel fichier inspecter. Un paramètre booléen "getsize" indique si les dimensions du fichier (s'il s'agit d'une image) doivent être renvoyées.
Exemple de demande :
[path to connector]?mode=getinfo&path=/UserFiles/Image/logo.png&getsize=true
Exemple de réponse :
{
"Path" : " /UserFiles/Image/logo.png " ,
"Filename" : " logo.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/logo.png " ,
"Protected" : 0 ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
}
Les clés sont les suivantes :
Path: The path to the file. Should match what was passed in the request.
Filename: The name of the file, i.e., the last part of the path.
File Type: The file extension, "dir" if a directory, or "txt" if missing/unknown.
Preview: Path to a preview image. If the file is an image that can be displayed in a web browser (i.e., gif, jpg, or png), you should return the path to the image. Otherwise, check to see if there is a matching file icon based on the file extension, constructing the path like so:
Directories: images/fileicons/_Open.png
Files: images/fileicons/[extension].png
Unknown: images/fileicons/default.png
Protected: Indicates if the file has some reading / writing restrictions. If not, set to 0. Else set to 1.
Properties: A nested JSON object containing specific properties of the file.
Date Created: The file's creation date, if available.
Date Modified: The file's modification date, if available.
Height: If an image, the height in pixels.
Width: If an image, the width in pixels.
Size: The file size in bytes.
Capabilities (optional): You can limit the operation buttons shown for a specific file. It is an array containing ['select','delete','rename','download'] (for all capabilities), or [] (for no capabilities). If not present, all capabilities are enabled.
Error: An error message, or empty/null if there was no error.
Code: An error code, or 0 if there was no error.
La méthode getfolder
renvoie un tableau d'objets fichier et dossier représentant le contenu du répertoire donné (indiqué par un paramètre "path"). Il doit appeler la méthode getinfo pour récupérer les propriétés de chaque fichier. Un paramètre booléen "getsizes" indique si les dimensions de l'image doivent être renvoyées pour chaque élément. Les dossiers doivent toujours être renvoyés avant les fichiers. En option, un paramètre "type" peut être spécifié pour restreindre les fichiers renvoyés (en fonction du connecteur). Si un paramètre "type" est donné pour l'URL principale index.html, la même valeur de paramètre est réutilisée et transmise à getfolder. Cela peut être utilisé par exemple pour afficher uniquement les fichiers image dans une arborescence du système de fichiers.
Exemple de demande :
[path to connector]?mode=getfolder&path=/UserFiles/Image/&getsizes=true&type=images
Exemple de réponse :
{
"/UserFiles/Image/logo.png" : {
"Path" : " /UserFiles/Image/logo.png " ,
"Filename" : " logo.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/logo.png " ,
"Protected" : 0 ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
},
"/UserFiles/Image/icon.png" : {
"Path" : " /UserFiles/Image/icon.png " ,
"Filename" : " icon.png " ,
"File Type" : " png " ,
"Preview" : " /UserFiles/Image/icon.png " ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : 14 ,
"Width" : 14 ,
"Size" : 384
},
"Error" : " " ,
"Code" : 0
},
"/UserFiles/folder/" :{
"Path" : " /UserFiles/folder/ " ,
"Filename" : " folder " ,
"File Type" : " dir " ,
"Preview" : " images / fileicons / _Open.png " ,
"Properties" : {
"Date Created" : null ,
"Date Modified" : " 02/09/2007 14:01:06 " ,
"filemtime" : 1360237058 ,
"Height" : null ,
"Width" : null ,
"Size" : null
},
"Error" : " " ,
"Code" : 0
}
}
Chaque clé du tableau est le chemin d'accès à un élément individuel et la valeur est l'objet fichier de cet élément.
La méthode rename
renomme l'élément au chemin indiqué dans le paramètre "old" avec le nom donné dans le paramètre "new" et renvoie un objet indiquant les résultats de cette action.
Exemple de demande :
[path to connector]?mode=rename&old=/UserFiles/Image/logo.png&new=id.png
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /a_folder_renamed/thisisareallylongincrediblylongfilenamefortesting.txt " ,
"Old Name" : " thisisareallylongincrediblylongfilenamefortesting.txt " ,
"New Path" : " /a_folder_renamed/a_renamed_file " ,
"New Name" : " a_renamed_file "
}
La méthode move
déplace "l'ancien" fichier ou répertoire vers le "nouveau" répertoire spécifié. Il est possible de spécifier le chemin absolu à partir du répertoire fileRoot ou le chemin relatif à partir de "l'ancien" élément. La valeur "root" est obligatoire pour garantir que les chemins relatifs ne dépassent pas fileRoot.
Exemple de demande : déplacer un fichier
[path to connector]?mode=move&old=/uploads/images/original/Image/logo.png&new=/moved/&root=/uploads/images/
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/Image/ " ,
"Old Name" : " logo.png " ,
"New Path" : " /uploads/images/moved/ " ,
"New Name" : " logo.png "
}
Exemple de demande : déplacer le répertoire vers un répertoire qui n'existe pas (sera créé)
[path to connector]?mode=move&old=/uploads/images/original/Image&new=../new_dir/&root=/uploads/images/
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Old Path" : " /uploads/images/original/ " ,
"Old Name" : " Image " ,
"New Path" : " /uploads/new_dir/ " ,
"New Name" : " Image "
}
La méthode delete
supprime l'élément au chemin donné.
Exemple de demande :
[path to connector]?mode=delete&path=/UserFiles/Image/logo.png
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/Image/logo.png "
}
La méthode add
ajoute le fichier téléchargé au chemin spécifié. Contrairement aux autres méthodes, cette méthode doit renvoyer sa réponse JSON enveloppée dans un HTML , donc le type MIME de la réponse est text/html au lieu de text/plain. Le formulaire de téléchargement dans le gestionnaire de fichiers transmet le chemin actuel en tant que paramètre POST avec le fichier téléchargé. La réponse inclut le chemin ainsi que le nom utilisé pour stocker le fichier. Le nom du fichier téléchargé doit pouvoir être utilisé en toute sécurité comme composant de chemin dans une URL, donc au minimum codé en URL.
Exemple de réponse :
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
La méthode replace
permet à l'utilisateur de remplacer un fichier spécifique quel que soit le nouveau nom de fichier - au moins, le nouveau fichier doit avoir la même extension que l'original. L'ancien fichier est automatiquement écrasé. Contrairement aux autres méthodes, cette méthode doit renvoyer sa réponse JSON enveloppée dans un HTML , donc le type MIME de la réponse est text/html au lieu de text/plain. Le formulaire de téléchargement dynamique dans le gestionnaire de fichiers transmet le chemin du fichier actuel en tant que paramètre POST avec le fichier téléchargé. La réponse inclut le chemin ainsi que le nom utilisé pour stocker le fichier.
Exemple de réponse :
{
"Path" : " /UserFiles/Image/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
La méthode editfile
renvoie le contenu d'un fichier donné (passé en paramètre). Il donne à l'utilisateur la possibilité de modifier un fichier en ligne (les extensions sont spécifiées dans le fichier de configuration). Géré comme une requête GET.
Exemple de demande :
[path to connector]?mode=editfile&path=/UserFiles/MyFolder/myfile.txt
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/MyFolder/myfile.txt " ,
"Content" : "Content" : " Lorem ipsum dolor sit amet, consectetur adipiscing elit. rn P hasellus eu erat lorem. rnrn B ye! "
}
La méthode save
écrasera le contenu du fichier actuel. Le formulaire d'édition dans le gestionnaire de fichiers transmet le mode (en tant que savefile
), le chemin du fichier actuel et le contenu en tant que paramètres POST.
Exemple de réponse :
{
"Error" : " No error " ,
"Code" : 0 ,
"Path" : " /UserFiles/MyFolder/myfile.txt "
}
La méthode preview
sert à l'affichage de l'image demandée. Le chemin de l'image est transmis via le paramètre path
. Si le paramètre thumbnail=true
est passé, la méthode renverra une vignette d’image. Un paramètre supplémentaire tel que l'heure UNIX peut être ajouté à l'URL pour éviter les problèmes de cache.
Exemple de demande :
[path to connector]?mode=preview&path=/UserFiles/new%20logo.png&thumbnail=true
La méthode addfolder
crée un nouveau répertoire sur le serveur dans le chemin indiqué.
Exemple de demande :
[path to connector]?mode=addfolder&path=/UserFiles/&name=new%20logo.png
Exemple de réponse :
{
"Parent" : " /UserFiles/ " ,
"Name" : " new_logo.png " ,
"Error" : " No error " ,
"Code" : 0
}
La méthode download
sert le fichier demandé à l'utilisateur. Nous utilisons actuellement un type MIME de « application/x-download » pour forcer le téléchargement du fichier plutôt que son affichage dans un navigateur. À l'avenir, nous pourrions faire des exceptions pour des types de fichiers spécifiques qui ont souvent des visionneuses dans le navigateur, tels que les PDF et divers formats de films (Flash, Quicktime, etc.).
Exemple de demande :
[path to connector]?mode=download&path=/UserFiles/new%20logo.png
Copyright (c) 2011-2013 Jason Huck, Simon Georget http://opensource.org/licenses/MIT
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.