Cette API permet de gérer des fichiers sur un serveur FTP. Elle propose des fonctionnalités telles que l'obtention des caractéristiques d'un fichier, la liste des fichiers et dossiers, l'upload de fichiers, ainsi que la création et suppression de dossiers.
- Python 3.7+
- Serveur FTP avec les informations d'identification.
- Accès au serveur pour installer des dépendances et déployer l'application.
Clone le projet depuis le dépôt git (ou récupère les fichiers du projet) :
git clone https://github.com/roy98/pythonFTPFileManager-API.git
cd pythonFTPFileManager-APIInstalle les bibliothèques Python nécessaires :
pip install -r requirements.txtContenu du fichier requirements.txt :
Flask==2.3.2
gunicorn==21.2.0
Crée un fichier config.py à la racine du projet avec le contenu suivant :
# config.py
FTP_CONFIG = {
'host': 'test.rebex.net', // url du serveur ftp sans ftp://
'port': 21,
'user': 'your_username',
'password': 'your_password'
}Remplace les valeurs par celles correspondant à ton serveur FTP.
Pour tester l'API en environnement de développement :
python pythonFTPFileManager.pyAccède à l'API via http://127.0.0.1:5000.
pip install gunicorngunicorn -w 4 -b 0.0.0.0:8000 pythonFTPFileManager:appCette commande lance l'application avec 4 workers, accessible à http://0.0.0.0:8000.
Exemple de configuration Nginx :
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
alias /route/vers/fichier/static/du/projet/si/il/y/en/a;
}
}- server_name : Remplace
yourdomain.compar ton domaine. - proxy_pass : Redirige vers Gunicorn.
-
Endpoint:
/file-info -
Méthode: GET
-
Paramètres:
path: Chemin complet du fichier sur le serveur FTP.
-
Exemple:
curl "http://127.0.0.1:5000/file-info?path=/path/to/file.txt" -
Réponse (si le fichier existe) :
{ "exists": true, "name": "file.txt", "extension": ".txt", "size": 12345, "path": "/path/to/file.txt" } -
Réponse (si le fichier n'existe pas) :
{ "exists": false, "path": "/path/to/file.txt" }
-
Endpoint:
/list-files -
Méthode: GET
-
Paramètres:
directory: Chemin complet du dossier sur le serveur FTP.
-
Exemple:
curl "http://127.0.0.1:5000/list-files?directory=/path/to/directory" -
Réponse :
[ "file1.txt", "file2.pdf", "image.png" ]
-
Endpoint:
/list-folders -
Méthode: GET
-
Paramètres:
directory: Chemin complet du dossier sur le serveur FTP.
-
Exemple:
curl "http://127.0.0.1:5000/list-folders?directory=/path/to/directory" -
Réponse :
[ "subfolder1", "subfolder2", "subfolder3" ]
-
Endpoint:
/upload-file -
Méthode: POST
-
Paramètres:
directory: Chemin complet du dossier où le fichier doit être téléversé.file: Le fichier à téléverser (via un formulairemultipart/form-data).
-
Exemple:
curl -F "file=@/local/path/to/file.txt" -F "directory=/path/to/directory" http://127.0.0.1:5000/upload-file
-
Réponse :
{ "message": "File uploaded successfully", "filename": "file.txt" }
-
Endpoint:
/create-folder -
Méthode: POST
-
Paramètres:
directory: Chemin complet du dossier parent.folder_name: Nom du sous-dossier à créer.
-
Exemple:
curl -X POST -d "directory=/path/to/parent" -d "folder_name=new_folder" http://127.0.0.1:5000/create-folder
-
Réponse :
{ "message": "Folder 'new_folder' created successfully" }
-
Endpoint:
/delete-file -
Méthode: DELETE
-
Paramètres:
directory: Chemin complet du dossier parent.filename: Nom du fichier à supprimer.
-
Exemple:
curl -X DELETE -d "directory=/path/to/directory" -d "filename=file.txt" http://127.0.0.1:5000/delete-file
-
Réponse :
{ "message": "File 'file.txt' deleted successfully" }
-
Endpoint:
/delete-folder -
Méthode: DELETE
-
Paramètres:
directory: Chemin complet du dossier parent.folder_name: Nom du dossier à supprimer.force_deletion:truepour forcer la suppression d'un dossier non vide.
-
Exemple:
curl -X DELETE -d "directory=/path/to/parent" -d "folder_name=folder_to_delete" -d "force_deletion=true" http://127.0.0.1:5000/delete-folder
-
Réponse :
{ "message": "Folder 'folder_to_delete' deleted successfully" }
Cette documentation fournit toutes les informations nécessaires pour installer, configurer, et utiliser l'API de gestion de fichiers FTP. Pour un déploiement en production, assure-toi de suivre les étapes de déploiement avec Gunicorn et de configurer un serveur proxy comme Nginx si nécessaire.