NPO_Tools / utils /file_drop_utils.py
DavMelchi's picture
initial commit
b9d0cf5
from typing import List, cast
import solara
from solara.components.file_drop import FileInfo
# parse_content
@solara.component
def FileDropMultiple(parse_content: callable):
content, set_content = solara.use_state(cast(List[bytes], []))
filename, set_filename = solara.use_state(cast(List[str], []))
size, set_size = solara.use_state(cast(List[int], []))
def on_file(files: List[FileInfo]):
set_filename([f["name"] for f in files])
set_size([f["size"] for f in files])
set_content([f["file_obj"].read() for f in files])
solara.FileDropMultiple(
label="Drag and drop files(s) here.",
on_file=on_file,
# lazy=True, # We will only read the first 100 bytes
# on_total_progress=lambda *args: None,
)
if content:
solara.Info(f"Number of uploaded files: {len(filename)}")
for f, s, c in zip(filename, size, content):
solara.Info(f"File {f} has total length: {s}\n")
parse_content(all_files=content)
# return content