Spaces:
Sleeping
Sleeping
import os | |
import gradio as gr | |
# Directory to store uploaded files | |
UPLOAD_DIR = "uploaded_cards" | |
os.makedirs(UPLOAD_DIR, exist_ok=True) | |
# Function to handle file uploads | |
def upload_config_card(file, description): | |
if not file: | |
return "Please upload a file." | |
# Save file | |
file_path = os.path.join(UPLOAD_DIR, file.name) | |
with open(file_path, "wb") as f: | |
f.write(file.read()) | |
# Save description | |
meta_path = file_path + "_meta.txt" | |
with open(meta_path, "w") as meta_file: | |
meta_file.write(description) | |
return f"File '{file.name}' uploaded successfully!" | |
# Function to list uploaded files | |
def list_uploaded_files(): | |
files = [] | |
for file in os.listdir(UPLOAD_DIR): | |
if not file.endswith("_meta.txt"): | |
file_path = os.path.join(UPLOAD_DIR, file) | |
meta_path = file_path + "_meta.txt" | |
description = "No description provided." | |
if os.path.exists(meta_path): | |
with open(meta_path, "r") as meta_file: | |
description = meta_file.read() | |
files.append({"File Name": file, "Description": description, "Download Link": file_path}) | |
return files | |
# Gradio Interface | |
def refresh_file_list(): | |
return list_uploaded_files() | |
with gr.Blocks() as app: | |
gr.Markdown("# Configuration Card Sharing Space") | |
gr.Markdown("Upload and share configuration cards with descriptions of their tasks.") | |
with gr.Row(): | |
with gr.Column(): | |
file_input = gr.File(label="Upload Configuration Card") | |
description_input = gr.Textbox(label="Task Description", placeholder="Describe the task here...") | |
upload_button = gr.Button("Upload") | |
upload_status = gr.Textbox(label="Upload Status", interactive=False) | |
with gr.Column(): | |
refresh_button = gr.Button("Refresh List") | |
file_table = gr.Dataframe(headers=["File Name", "Description", "Download Link"], interactive=False) | |
# Bind upload and refresh functions | |
upload_button.click(upload_config_card, inputs=[file_input, description_input], outputs=[upload_status]) | |
refresh_button.click(refresh_file_list, outputs=[file_table]) | |
app.launch() | |