Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

File Upload - Cannot manage csv file after uploaded. #2238

Closed
adrianrjh opened this issue Jan 23, 2024 · 1 comment
Closed

File Upload - Cannot manage csv file after uploaded. #2238

adrianrjh opened this issue Jan 23, 2024 · 1 comment
Assignees
Labels
question Question

Comments

@adrianrjh
Copy link

adrianrjh commented Jan 23, 2024

After uploaded csv file, I want to manage the file for make arrays, but the server say that not such file directory. So, i don't know where's the file.

from h2o_wave import main, app, Q, ui
@app('/demo')
    async def serve(q: Q):
    data_rows = []
    if 'file_upload' in q.args:
        with open(q.args.file_upload) as csvfile:
            reader = csv.reader(csvfile) # change contents to floats
            for row in reader: # each row is a list
                count += 1
                if count > 1:
                    data_rows.append(row)
        q.page['example'] = ui.form_card(box='1 1 4 10', items=[
            ui.text(f'file_upload={data_rows}'),
            ui.button(name='show_upload', label='Back', primary=True),
        ])
    else:
        q.page['example'] = ui.form_card(
            box='1 1 4 7',
            items=[
                ui.file_upload(
                    name='file_upload', 
                    label='Upload!', 
                    multiple=True,
                    file_extensions=['csv', 'gz'],
                    max_file_size=10, max_size=15
                )
            ]
        )
    await q.page.save()
@adrianrjh adrianrjh added the bug Bug in code label Jan 23, 2024
@marek-mihok marek-mihok self-assigned this Jan 23, 2024
@marek-mihok
Copy link
Contributor

marek-mihok commented Jan 23, 2024

@adrianrjh To use the files uploaded from the browser to the wave server you have to first download it into the wave app. Here is the updated example:

import csv
from h2o_wave import main, app, Q, ui

@app('/')

async def serve(q: Q):
    data_rows = []
    if 'file_upload' in q.args:
        # Since multiple file uploads are allowed, the file_upload argument is a list.
        for path in q.args.file_upload:
            # To use the file uploaded from the browser to the wave server, download it into the app.
            local_path = await q.site.download(path, '.')
            with open(local_path) as csvfile:
                # Do something with the file located at local_path
                # ...
                pass
        # Update the UI
        q.page['example'] = ui.form_card(box='1 1 4 10', items=[
            ui.text(f'file_upload={data_rows}'),
            ui.button(name='show_upload', label='Back', primary=True),
        ])
    else:
        q.page['example'] = ui.form_card(
            box='1 1 4 7',
            items=[
                ui.file_upload(
                    name='file_upload', 
                    label='Upload!', 
                    multiple=True,
                    file_extensions=['csv', 'gz'],
                    max_file_size=10, max_size=15
                )
            ]
        )
    await q.page.save()

@mturoci mturoci added question Question and removed bug Bug in code labels Jan 31, 2024
@h2oai h2oai locked and limited conversation to collaborators Jan 31, 2024
@mturoci mturoci converted this issue into discussion #2244 Jan 31, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
question Question
Projects
None yet
Development

No branches or pull requests

3 participants