Spaces:
Sleeping
Sleeping
Update app.py
Browse filesExplicaçã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.
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
|
13 |
file_tree = {}
|
14 |
for root, dirs, files in os.walk(directory):
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
file_tree[folder_path].append(
|
|
|
|
|
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 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
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")
|