images form data allowed_extensions python flask flask-uploads

python - form - save() flask



Frasco: eliminaciĆ³n de cargas despuĆ©s de que se hayan descargado (1)

Actualmente estoy trabajando en una pequeña interfaz web que permite a diferentes usuarios cargar archivos, convertir los archivos que han cargado y descargar los archivos convertidos. Los detalles de la conversión no son importantes para mi pregunta.

Actualmente estoy usando cargas de matraz para administrar los archivos cargados, y los estoy almacenando en el sistema de archivos. Una vez que un usuario carga y convierte un archivo, hay todo tipo de bonitos botones para eliminar el archivo, de modo que la carpeta de carga no se llene.

No creo que esto sea ideal. Lo que realmente quiero es que los archivos se eliminen justo después de que se descarguen. Me conformaría con los archivos que se eliminan cuando termina la sesión.

He pasado un tiempo tratando de descubrir cómo hacer esto, pero todavía tengo que tener éxito. No parece ser un problema poco común, así que creo que debe haber alguna solución que me esté faltando. ¿Alguien tiene una solución?


Flask tiene un decorador after_this_request que podría funcionar para este caso de uso:

@app.route(''/files/<filename>/download'') def download_file(filename): file_path = derive_filepath_from_filename(filename) file_handle = open(file_path, ''r'') @after_this_request def remove_file(response): try: os.remove(file_path) file_handle.close() except Exception as error: app.logger.error("Error removing or closing downloaded file handle", error) return response return send_file(file_handle)

El problema es que esto solo funcionará bien en Linux (lo que permite que el archivo se lea incluso después de la eliminación si todavía hay un puntero de archivo abierto).