Spaces:
Sleeping
Sleeping
| import os | |
| import tempfile | |
| import mimetypes | |
| class UploadTool: | |
| """ | |
| Handles uploaded files and stores them temporarily. | |
| """ | |
| def __init__(self): | |
| self.temp_files = [] | |
| def save_uploads(self, uploaded_files): | |
| """ | |
| Save uploaded Streamlit files to temporary storage. | |
| Returns: | |
| [ | |
| { | |
| "name": "...", | |
| "path": "...", | |
| "type": "...", | |
| "size": ... | |
| } | |
| ] | |
| """ | |
| saved_files = [] | |
| if not uploaded_files: | |
| return saved_files | |
| for file in uploaded_files: | |
| suffix = os.path.splitext(file.name)[1] | |
| temp_file = tempfile.NamedTemporaryFile( | |
| delete=False, | |
| suffix=suffix | |
| ) | |
| temp_file.write(file.getbuffer()) | |
| temp_file.close() | |
| file_info = { | |
| "name": file.name, | |
| "path": temp_file.name, | |
| "type": mimetypes.guess_type(file.name)[0], | |
| "size": os.path.getsize(temp_file.name) | |
| } | |
| saved_files.append(file_info) | |
| self.temp_files.append(temp_file.name) | |
| return saved_files | |
| def cleanup(self): | |
| """ | |
| Delete all temporary uploaded files. | |
| """ | |
| for file_path in self.temp_files: | |
| try: | |
| if os.path.exists(file_path): | |
| os.remove(file_path) | |
| except Exception: | |
| pass | |
| self.temp_files.clear() | |
| # -------------------------------------------------- | |
| # Backward-compatible function | |
| # -------------------------------------------------- | |
| upload_tool = UploadTool() | |
| def save_uploads(uploaded_files): | |
| return upload_tool.save_uploads(uploaded_files) | |
| def cleanup_uploads(): | |
| upload_tool.cleanup() |