Атрибут filename
Атрибут filename принадлежит классу FileStorage
и содержит исходное имя файла, которое было передано
клиентом при загрузке. Атрибут доступен только для чтения
и возвращает строку. Если имя файла не было передано,
атрибут вернёт None. Значение filename
не является безопасным путём и не должно использоваться
напрямую для сохранения файла на диск.
Синтаксис
file_storage.filename
Пример
Давайте выведем имя загруженного файла в ответ на запрос. Создадим форму и обработчик:
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
file = request.files['file']
return file.filename
return '''
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
'''
После загрузки файла с именем article.txt
результат выполнения кода будет:
article.txt
Пример
Давайте используем атрибут filename для
безопасного сохранения файла через функцию
secure_filename:
from flask import Flask, request
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
name = secure_filename(file.filename)
file.save(os.path.join('uploads', name))
return name
При загрузке файла с именем user report.pdf
результат выполнения кода будет:
user_report.pdf
Пример
Давайте проверим, что имя файла не пустое, перед сохранением:
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
if file.filename == '':
return 'no file selected'
return file.filename
Если файл не был выбран, результат выполнения кода будет:
"no file selected"
Смотрите также
-
класс
FileStorage,
который представляет загруженный файл -
метод
save,
который сохраняет загруженный файл на диск -
атрибут
name,
который хранит имя поля формы -
атрибут
content_type,
который хранит MIME-тип загруженного файла