AskFileMessage
Ask the user to upload a file before continuing. If the user does not answer in time (see timeout), a TimeoutError will be raised or None will be returned depending on raise_on_timeout. If a project ID is configured, the messages will be uploaded to the cloud storage.
Attributes
Text displayed above the upload button.
List of mime type to accept like ["text/csv", "application/pdf"]
or a dict like {"text/plain": [".txt", ".py"]}
.
More infos here https://react-dropzone.org/#!/Accepting%20specific%20file%20types.
Maximum file size in MB. Defaults to 2.
Maximum number of files to upload. Defaults to 1. Maximum value is 10.
The number of seconds to wait for an answer before raising a TimeoutError.
Whether to raise a socketio TimeoutError if the user does not answer in time.
Returns
The files uploaded by the user.
Example
import chainlit as cl
@cl.on_chat_start
async def start():
files = None
# Wait for the user to upload a file
while files == None:
files = await cl.AskFileMessage(
content="Please upload a text file to begin!", accept=["text/plain"]
).send()
text_file = files[0]
with open(text_file.path, "r", encoding="utf-8") as f:
text = f.read()
# Let the user know that the system is ready
await cl.Message(
content=f"`{text_file.name}` uploaded, it contains {len(text)} characters!"
).send()
You can also pass a dict to the accept
parameter to precise the file extension for each mime type:
import chainlit as cl
file = await cl.AskFileMessage(
content="Please upload a python file to begin!", accept={"text/plain": [".py"]}
).send()
Was this page helpful?