| from typing import List, cast |
|
|
| import solara |
| from solara.components.file_drop import FileInfo |
|
|
| |
|
|
|
|
| @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, |
| |
| |
| ) |
| 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) |
| |
|
|