file uploader
Drop files here
or click to upload
import streamlit as st
import pandas as pd
from io import StringIO
st.title("File Uploader Demo")
st.write("Upload a file and see its contents:")
# Single file uploader
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
st.success(f"File uploaded: {uploaded_file.name}")
# Display file details
st.write(f"**File name:** {uploaded_file.name}")
st.write(f"**File type:** {uploaded_file.type}")
st.write(f"**File size:** {uploaded_file.size} bytes")
# Try to read the file based on its type
try:
if uploaded_file.type == "text/csv":
# Read as CSV
df = pd.read_csv(uploaded_file)
st.write("**CSV Content:**")
st.table(df)
elif uploaded_file.type == "text/plain":
# Read as text
stringio = StringIO(uploaded_file.getvalue().decode("utf-8"))
string_data = stringio.read()
st.write("**Text Content:**")
st.text(string_data)
elif uploaded_file.type.startswith("image/"):
# Display image
st.write("**Image Preview:**")
st.image(uploaded_file)
else:
# Show raw bytes for other file types
bytes_data = uploaded_file.getvalue()
st.write("**Raw bytes (first 1000 characters):**")
st.text(str(bytes_data[:1000]))
except Exception as e:
st.error(f"Error reading file: {str(e)}")
st.divider()
# Multiple file uploader
st.write("Upload multiple files:")
uploaded_files = st.file_uploader(
"Choose multiple files",
accept_multiple_files=True
)
if uploaded_files:
st.success(f"{len(uploaded_files)} files uploaded")
for i, uploaded_file in enumerate(uploaded_files):
st.write(f"**File {i+1}:** {uploaded_file.name} ({uploaded_file.size} bytes)")
st.divider()
# Specific file type uploader
st.write("Upload only CSV files:")
csv_file = st.file_uploader(
"Choose a CSV file",
type=['csv']
)
if csv_file is not None:
df = pd.read_csv(csv_file)
st.write("**CSV Data:**")
st.table(df)
st.divider()
# Image uploader
st.write("Upload only image files:")
image_file = st.file_uploader(
"Choose an image",
type=['png', 'jpg', 'jpeg', 'gif']
)
if image_file is not None:
st.image(image_file, caption="Uploaded Image", use_column_width=True)
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?