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