Catching the error message in file-upload

Hello :)),

So I’ve have already given the upload_file function the type “xlsx”. So everytime the User uploads something else they get this error:

Now what I want to do is being able to catch this message since It’s not looking that good and show him my own customized error message.

I have tried it with if else and try expect but that msg seems to have a priority.

st.title(“Data-Upload”)
uploaded_file = st.file_uploader(
label=“Upload here please”,
type=[‘xlsx’],
help=“Upload the required file here please”)

Would be very grateful for your help.

Hi @Lbayti

This seems to be the default file type error message as brought upon by the type=['xlsx'] option. So if we can comment that out, then we can implement an error catching mechanism.

I’ve tried experimenting and came up with the following example code.

Code

import streamlit as st
import os

st.title("Data-Upload")

uploaded_file = st.file_uploader(
    label="Upload here please",
    #type=["xlsx"], # Comment out to evade Streamlit's built-in file type detector
    help="Upload the required file here please")


if uploaded_file is not None:
    filename, file_extension = os.path.splitext(uploaded_file.name)

    if (file_extension == ".xlsx") is True:
        st.success("File type is XLSX")
        # Perform intended task here ...
    else:
        st.error('File type is not XLSX')

Scenario 1:

Here’s when the file type is XLSX:

Scenario 2:

Here’s when the file type is not XLSX:

Thank you very much.

I guess I was too focused on catching the error, that I did not think about just letting it accept more file types.

You’re welcome! Glad it helped.

Just in case, here’s the entire code for the app:

# Catching the error message in file-upload 
import streamlit as st
import os

st.title("Data-Upload")

uploaded_file = st.file_uploader(
    label="Upload here please",
    #type=["xlsx"], # Comment out to evade Streamlit's built-in file type detector
    help="Upload the required file here please")


if uploaded_file is not None:
    filename, file_extension = os.path.splitext(uploaded_file.name)

    if (file_extension == ".xlsx") is True:
        st.success("File type is XLSX")
        # Perform intended task here ...
    else:
        st.error('File type is not XLSX')