How to show LiveView Uploads progress/feedback for server-side processing

I have a case where I want to upload images and do some processing on the server, create variants and upload them to S3.
The problem is that progress shows only upload to the server and there is no way to give feedback for processing and S3 upload while consuming file, which can take time, especially so for multiple files.

I wonder it there is some way to do it, or what will be a good way to implement it?

Welcome @aytigra! I would recommend using LiveView client-side uploads to get the file to S3 and then handle creating the variants in the background. If you need to display progress on the background work, you could send your own messages to the LiveView to notify on the progress.

2 Likes

But I will need to upload variants to S3 as well, which will be on back-end, it will result in unnecessary duplication, also I will process original images as well.

I did try to send progress messages to the LiveView with send() -> Phoenix.LiveView.Upload.update_progress from handle_event("save"), but they just stack until “save” is finished. I can do workaround with handle_info(:postprocessing, step) kind of stuff, but it becomes quite ugly, and it will also require temp file path before consuming file, which it is impossible without changes to Phoenix.LiveView.UploadChannel.