# Importation des modules nécessaires import requests # Pour effectuer des requêtes HTTP import streamlit as st # Pour créer l'interface utilisateur web # Définition de la fonction principale pour l'onglet 4 de l'application def app_tab4(): # Affichage d'un en-tête dans l'interface utilisateur st.header("Images") # Préparation des en-têtes HTTP pour l'authentification http_headers = {"Authorization": f"Bearer {st.session_state['bearer_token']}"} # Section pour afficher les images disponibles st.write("Images disponibles") # Récupération de la liste des images depuis le serveur response = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/images/", headers=http_headers) images = [] if response.status_code == 200: images = response.json().get("images", []) else: st.error(f"Erreur lors de la récupération des images: {response.status_code} - {response.text}") if images: # Création d'un menu déroulant pour sélectionner une image selected_image = st.selectbox("Choisis une image:", images) # Récupération et affichage de l'image sélectionnée image_response = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/images/{selected_image}", headers=http_headers) if image_response.status_code == 200: image_data = image_response.content st.image(image_data) else: st.error(f"Erreur lors de la récupération de l'image: {image_response.status_code} - {image_response.text}") else: st.info("Aucune image disponible.") # Section pour envoyer une nouvelle image st.write("Envoyer une image") # Création d'un widget pour télécharger des fichiers uploaded_files = st.file_uploader("Choisis un fichier image", accept_multiple_files=True) # Traitement des fichiers téléchargés if uploaded_files is not None: for uploaded_file in uploaded_files: # Préparation de l'URL pour l'envoi de l'image url = f"{st.session_state['fabriquedoc_endpoint']}/images/" # Création d'un objet FormData pour l'envoi du fichier files = {"file": uploaded_file} # Envoi du fichier au serveur response = requests.post(url, files=files, headers=http_headers) # Vérification du statut de la réponse if response.status_code < 300: st.write(f"Le fichier {uploaded_file.name} a été envoyé avec succès !") else: st.write(f"L'envoi du fichier {uploaded_file.name} a échoué.")