KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a page that displays a list of files in a directory. When the user clicks on the Download button, all of these files are zipped into a single file, which is then offered for download. I know how to send this file to the browser when the button is clicked, and I know how to reload the current page (or redirect to a different one), but is it possible to do both in the same step? Or would it make more sense to redirect to a different page with a download link? My download is initiated with the Flask API's send_from_directory . Relevant test code: @app.route('/download', methods=['GET','POST']) def download(): error=None # ... if request.method == 'POST': if download_list == None or len(download_list) < 1: error = 'No files to download' else: timestamp = dt.now().strftime('%Y%m%d:%H%M%S') zfname = 'reports-' + str(timestamp) + '.zip' zf = zipfile.ZipFile(downloaddir + zfname, 'a') for f in download_list: zf.write(downloaddir + f, f) zf.close() # TODO: remove zipped files, move zip to archive return send_from_directory(downloaddir, zfname, as_attachment=True) return render_template('download.html', error=error, download_list=download_list) Update: As a workaround, I am now loading a new page with the button click, which lets the user initiate the download (using send_from_directory ) before returning to the updated listing.
Tags (comma-separated)
Save Edits
Cancel