ahmedkandel / nova-s3-multipart-upload

A Laravel Nova resource tool to upload files directly to Amazon S3. You can (upload | download | delete) single, multiple, small or big files.
MIT License
23 stars 22 forks source link

"Download All" feature? #9

Closed bryanjamesmiller closed 3 years ago

bryanjamesmiller commented 3 years ago

Hi again!

I'm still enjoying your awesome package. I am wondering if there could be an easy way to add some kind of "Download All" button, that would zip up the files and download all of them?

bryanjamesmiller commented 3 years ago

I will relocate this issue to Uppy actually 😃

ahmedkandel commented 3 years ago

Hi @bryanjamesmiller S3 doesn't support zipping files as It's simple object storage with no file manipulation capaplities. To do so you need a backend either using your Laravel Backend or even AWS Lambda. Here are some examples:

http://coderaweso.me/zip-and-download-files-directory-from-amazon-s3-with-laravel/ https://www.antstack.io/blog/create-zip-using-lambda-with-files-streamed-from-s3/

Currently, we can not support such a feature as our target is to keep a very low footprint on the server by directly upload/download files to/from Amazon S3.

ahmedkandel commented 3 years ago

Here is a quick implementation If you choose to implement a backend function into your project.

You can make use of Nova Actions, Create a new action maybe with a text field to insert the zip file name maybe also you need to use queues it will take much time to create the zip.

In the action handle get the files paths from the model or its relationships then loop on them and add to a locally create zip then redirect to the zip location when done or send link by email if you use a queue.

bryanjamesmiller commented 3 years ago

Thanks again @ahmedkandel - we ended up making a custom component to use to make a "Download All" Nova link.