import gradio as gr def filesystem(fex): # Get the file extension file_extension = fex.split('/')[-1].split('.')[-1] if file_extension in ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff']: return {im: gr.Image(value=fex, visible=True, label='Selected Image'), cd: gr.JSON(visible=False), df: gr.Dataframe(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension == 'txt': with open(fex, 'r') as f: content = f.read() if len(content) == 0: content = "This is a blank textfile" return {txt: gr.Textbox(content, visible=True, label='Selected Textfile'), cd: gr.JSON(visible=False), df: gr.Dataframe(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension == 'json': with open(fex, 'r') as f: content = f.read() if len(content) == 0: content = "This is a blank JSON file" return {cd: gr.JSON(value=content, visible=True, label='Code'), df: gr.Dataframe(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension == 'csv': return {df: gr.Dataframe(value=fex, visible=True, label='Selected CSV file'), cd: gr.JSON(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension == 'md': with open(fex, 'r') as f: content = f.read() if len(content) == 0: content = "This is a blank Markdown file" return {md: gr.Markdown(value=content, visible=True, label='Selected Markdown file'), cd: gr.JSON(visible=False), df: gr.Dataframe(visible=False), im: gr.Image(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension == 'zip': return {zip: gr.File(value=fex, visible=True, label='Selected Zip file'), df: gr.Dataframe(visible=False), cd: gr.JSON(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } elif file_extension in ['mp4', 'wmv', 'mp3']: return {vid: gr.Video(value=fex, visible=True, label='Selected video file'), df: gr.Dataframe(visible=False), cd: gr.JSON(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), code: gr.Code(visible=False), } elif file_extension in ['py', 'js', 'java', 'c', 'cpp', 'php', 'html', 'css', 'swift']: with open(fex, 'r') as f: content = f.read() if len(content) == 0: content = "This is a blank Code file" return {code: gr.Code(value=content, visible=True, label='Selected Code file'), df: gr.Dataframe(visible=False), cd: gr.JSON(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), txt: gr.Textbox(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), } else: msg = fex + " - " + "This is an Unsupported file type at the moment." return {txt: gr.Textbox(value=msg, visible=True, label='Selected Textfile'), cd: gr.JSON(visible=False), df: gr.Dataframe(visible=False), im: gr.Image(visible=False), md: gr.Markdown(visible=False), zip: gr.File(visible=False), vid: gr.Video(visible=False), code: gr.Code(visible=False), } with gr.Blocks() as demo: gr.Markdown("#
File Handling using the new gr.FileExplorer() Gradio Component
") with gr.Row(): fex1 = gr.FileExplorer(file_count='single') cd = gr.JSON(visible=False) df = gr.Dataframe(visible=False) im = gr.Image(visible=False) md = gr.Markdown(visible=False) txt = gr.Textbox(visible=False) zip = gr.File(visible=False) vid = gr.Video(visible=False) code = gr.Code(visible=False) fex1.change(filesystem, fex1, [cd, df, im, md, txt,zip, vid, code]) demo.launch(debug=True) #, height=800)