13ze commited on
Commit
47f0102
·
verified ·
1 Parent(s): 041c2d9

Update app.py

Browse files

Explicação das Modificações
Uso da Biblioteca streamlit_tree_select:

A biblioteca streamlit_tree_select é usada para criar um componente de árvore de arquivos interativo.
A função list_files_tree lista os arquivos em um formato de árvore.
A função generate_file_tree converte a estrutura de arquivos em um formato que pode ser usado pelo streamlit_tree_select.
Exibição de Arquivos:

A interface permite o upload de arquivos.
Os arquivos são exibidos em uma estrutura de árvore, permitindo que o usuário clique e visualize imagens ou baixe outros tipos de arquivos.
Deleção de Arquivos:

O usuário pode deletar arquivos especificando o caminho do arquivo.

Files changed (1) hide show
  1. app.py +34 -17
app.py CHANGED
@@ -1,5 +1,6 @@
1
  import os
2
  import streamlit as st
 
3
 
4
  # Configuração do diretório de armazenamento
5
  STORAGE_DIR = "storage"
@@ -8,17 +9,34 @@ STORAGE_DIR = "storage"
8
  if not os.path.exists(STORAGE_DIR):
9
  os.makedirs(STORAGE_DIR)
10
 
11
- # Função para listar arquivos
12
- def list_files(directory):
13
  file_tree = {}
14
  for root, dirs, files in os.walk(directory):
15
- for name in files:
16
- folder_path = os.path.relpath(root, directory)
17
- if folder_path not in file_tree:
18
- file_tree[folder_path] = []
19
- file_tree[folder_path].append(name)
 
 
20
  return file_tree
21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  # Interface do Streamlit
23
  st.title("Gerenciamento de Armazenamento em Nuvem")
24
 
@@ -32,16 +50,15 @@ if uploaded_file is not None:
32
 
33
  # Exibir arquivos
34
  st.header("Arquivos no Armazenamento")
35
- files = list_files(STORAGE_DIR)
36
- for folder, files in files.items():
37
- st.subheader(folder)
38
- for file in files:
39
- file_path = os.path.join(folder, file)
40
- file_url = f"storage/{file_path}"
41
- if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp')):
42
- st.image(file_url, caption=file, use_column_width=True)
43
- else:
44
- st.markdown(f"[{file}]({file_url})")
45
 
46
  # Deletar arquivo
47
  st.header("Deletar Arquivo")
 
1
  import os
2
  import streamlit as st
3
+ from streamlit_tree_select import tree_select
4
 
5
  # Configuração do diretório de armazenamento
6
  STORAGE_DIR = "storage"
 
9
  if not os.path.exists(STORAGE_DIR):
10
  os.makedirs(STORAGE_DIR)
11
 
12
+ # Função para listar arquivos em formato de árvore
13
+ def list_files_tree(directory):
14
  file_tree = {}
15
  for root, dirs, files in os.walk(directory):
16
+ folder_path = os.path.relpath(root, directory)
17
+ if folder_path not in file_tree:
18
+ file_tree[folder_path] = {'folders': [], 'files': []}
19
+ for d in dirs:
20
+ file_tree[folder_path]['folders'].append(d)
21
+ for f in files:
22
+ file_tree[folder_path]['files'].append(f)
23
  return file_tree
24
 
25
+ # Função para gerar árvore de arquivos
26
+ def generate_file_tree(directory):
27
+ tree_data = {}
28
+ file_tree = list_files_tree(directory)
29
+ for folder, contents in file_tree.items():
30
+ path_parts = folder.split(os.sep)
31
+ current_level = tree_data
32
+ for part in path_parts:
33
+ if part not in current_level:
34
+ current_level[part] = {}
35
+ current_level = current_level[part]
36
+ for f in contents['files']:
37
+ current_level[f] = None
38
+ return tree_data
39
+
40
  # Interface do Streamlit
41
  st.title("Gerenciamento de Armazenamento em Nuvem")
42
 
 
50
 
51
  # Exibir arquivos
52
  st.header("Arquivos no Armazenamento")
53
+ file_tree_data = generate_file_tree(STORAGE_DIR)
54
+ selected_file = tree_select(file_tree_data)
55
+
56
+ if selected_file:
57
+ file_url = os.path.join(STORAGE_DIR, selected_file)
58
+ if selected_file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp')):
59
+ st.image(file_url, caption=selected_file, use_column_width=True)
60
+ else:
61
+ st.markdown(f"[{selected_file}]({file_url})")
 
62
 
63
  # Deletar arquivo
64
  st.header("Deletar Arquivo")