40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from nicegui import ui
|
|
from typing import Dict, Any, List
|
|
import base64
|
|
from PIL import Image
|
|
import io
|
|
from niceguiex.components import FileDrop
|
|
from tempfile import SpooledTemporaryFile
|
|
|
|
|
|
@ui.page('/')
|
|
async def main_page():
|
|
ui.label('File Drop Demo').classes('text-h4 mb-4')
|
|
|
|
# Example 1: Multiple files with content
|
|
uploaded_files = ui.column().classes('w-full mt-4')
|
|
|
|
async def handle_multiple_files(file_name: str, file_type: str, file_content: SpooledTemporaryFile):
|
|
with uploaded_files:
|
|
with ui.card().classes('p-2 mb-2'):
|
|
ui.label(f"📄 {file_name}").classes('font-medium')
|
|
ui.label(f"Type: {file_type}").classes('text-sm text-gray-600')
|
|
|
|
ui.label('Multiple Files (returns list)').classes('text-h6 mb-2')
|
|
FileDrop(
|
|
on_upload=handle_multiple_files,
|
|
multiple=True,
|
|
accept='.pdf,.docx,.txt,.jpg,.png',
|
|
).classes('w-full max-w-xl mx-auto')
|
|
|
|
ui.separator().classes('my-8')
|
|
|
|
if __name__ in {"__main__", "__mp_main__"}:
|
|
ui.run(
|
|
title='File Drop Demo',
|
|
favicon='📁',
|
|
show=False,
|
|
dark=False,
|
|
port=8083
|
|
)
|