Если вы установите mimetype
на 'application/octet-stream'
, тогда браузер должен его сохранить.
send_file(..., mimetype='application/octet-stream')
send_from_directory(..., mimetype='application/octet-stream')
Do c: send_file
См. Также: Нужен ли Content-Type: application / octet-stream для загрузки файла?
РЕДАКТИРОВАТЬ:
Минимальный рабочий пример - вам нужно только установить правильные имена файлов в index()
Неважно, есть ли у вас файл .json
, .txt
, изображение, .pdf
или другое. Работает для всех типов файлов.
from flask import Flask, render_template_string, send_from_directory
app = Flask(__name__)
app.config['MAIN_FOLDER'] = '.'
@app.route('/')
def index():
all_filenames = [
'requiredFields.json',
'input.txt',
'image.jpg',
'document.pdf',
]
return render_template_string('''
{% for file in all_files %}
<a href="{{ url_for('download_file', filename=file) }}">Download {{file}}</a><br/>
{% endfor %}''', all_files=all_filenames)
#@app.route('/download_file/<filename>')
@app.route('/download_file/<path:filename>')
def download_file(filename):
return send_from_directory(app.config['MAIN_FOLDER'], filename, as_attachment=True, attachment_filename=filename, mimetype='application/octet-stream')
if __name__ == '__main__':
app.run() #debug=True