streamlit-chat-input-fileupload
A Streamlit custom component that extends the standard st.chat_input with file upload capability. Drop-in replacement for building chat interfaces that need document and image attachments.
Features
- Combined text input and file upload in a single component
- Paperclip button for file selection with filename indicator
- Supports images (PNG, JPG, GIF, WebP) and documents (PDF, CSV, TXT, XLSX, DOCX, MD, HTML)
- Auto-detects light/dark theme from Streamlit's settings
- Returns message text and file data (as bytes) in a single dict
- Built with Streamlit Components v2 API
Installation
pip install streamlit-chat-input-fileupload
Usage
import streamlit as st
from streamlit_chat_input_fileupload import chat_input_with_upload
user_input = chat_input_with_upload(placeholder="Send a message...")
if user_input:
st.write(f"Message: {user_input['text']}")
if user_input["file"]:
st.write(f"File: {user_input['file']['name']}")
# user_input["file"]["data"] contains raw bytes
API
chat_input_with_upload()
chat_input_with_upload(
placeholder="Send a message...", # Input placeholder text
disabled=False, # Disable the input
key=None, # Unique component key
)
Returns None or dict:
text(str): Message textfile(dict or None):{name, type, size, data}wheredatais bytes
Sending Files to User
Use Streamlit's built-in st.download_button to send files back to the user:
import streamlit as st
# Text file
st.download_button(
label="Download Report",
data="Report content here",
file_name="report.txt",
mime="text/plain",
)
# Binary file (e.g., generated image, PDF)
st.download_button(
label="Download Image",
data=image_bytes,
file_name="output.png",
mime="image/png",
)
# CSV data
import pandas as pd
df = pd.DataFrame({"col1": [1, 2], "col2": [3, 4]})
st.download_button(
label="Download CSV",
data=df.to_csv(index=False),
file_name="data.csv",
mime="text/csv",
)
License
MIT
Metadata
Release files for streamlit-chat-input-fileupload 0.6.17
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| streamlit_chat_input_fileupload-0.6.17-py3-none-any.whl | Python 3 | none | any | Details |
Release files / streamlit_chat_input_fileupload-0.6.17-py3-none-any.whl
| Download URL | streamlit_chat_input_fileupload-0.6.17-py3-none-any.whl |
|---|---|
| Size | 7.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f3b87e7eb85f18f801c3ff2a5fb497a882881044216ec454974a3b07444f9647
|
|
BLAKE2b-256 checksum How to use checksums |
f96331afc518da9c644c0f8d6fd7b7f15cf239072b1f103db6353a8c1be48e61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|