Атрибут files
Атрибут files применяется к объекту запроса
request и возвращает словарь с загруженными
файлами. Ключами словаря выступают имена полей
формы, а значениями - объекты FileUpload,
содержащие имя файла, его содержимое и тип.
Атрибут доступен только для запросов с методом POST
и типом содержимого multipart/form-data.
Если файлы не были загружены, возвращается пустой
словарь.
Синтаксис
request.files
Пример
Давайте выведем список имён загруженных файлов:
from bottle import Bottle, request
app = Bottle()
@app.route('/upload', method='POST')
def upload():
res = []
for name in request.files:
res.append(name)
return str(res)
Результат выполнения кода после отправки формы
с полями file1 и file2:
['file1', 'file2']
Пример
Давайте получим объект загруженного файла и прочитаем его содержимое:
from bottle import Bottle, request
app = Bottle()
@app.route('/upload', method='POST')
def upload():
upload = request.files.get('file1')
if upload:
content = upload.file.read()
return upload.filename
return 'no file'
Результат выполнения кода для файла
с именем 'abcde.txt':
"abcde.txt"
Пример
Давайте сохраним загруженный файл на диск:
from bottle import Bottle, request
app = Bottle()
@app.route('/upload', method='POST')
def upload():
upload = request.files.get('file1')
if upload:
upload.save('uploads', overwrite=True)
return 'saved'
return 'no file'
Результат выполнения кода при успешном сохранении:
"saved"