Вы игнорируете загрузочный набор, когда принимаете файлы.Вам нужно использовать метод UploadSet.save()
для проверки расширения, чтобы включить его.
Вам также нужно передать последовательность расширений, в настоящее время вы передаете строку, добавляя запятую ксделайте его кортежем:
csv_file = UploadSet('files', ('csv',))
и, по вашему мнению, используйте:
@app.route('/datauploads', methods=['GET', 'POST'])
def datauploads():
if request.method == 'POST' and 'csv_data' in request.files:
filename = csv_file.save(request.files['csv_data'])
return render_template('details.html', filename=filename)
return render_template('index.html')
Однако вы, вероятно, захотите перехватить исключение UploadNotAllowed
, так как в противном случае вы получите 500ошибка:
from flask_uploads import UploadSet, configure_uploads, UploadNotAllowed
from flask import flash
@app.route('/datauploads', methods=['GET', 'POST'])
def datauploads():
if request.method == 'POST' and 'csv_data' in request.files:
try:
filename = csv_file.save(request.files['csv_data'])
return render_template('details.html', filename=filename)
except UploadNotAllowed:
flash('Only CSV files can be uploaded, please correct', 'error')
return render_template('index.html')
Я использовал мигающее сообщение (которое Flask-Bootstrap может поддерживать напрямую ), но ваш index.html
также может быть изменен, чтобы принять ошибкусообщение.