File size: 1,044 Bytes
b9d0cf5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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