Атрибут raw_filename
Атрибут raw_filename применяется к объекту
FileUpload, который Bottle создаёт при
обработке загруженного файла. Атрибут содержит
исходное имя файла в том виде, в каком его передал
клиент, без какой-либо нормализации или обработки.
Значение берётся напрямую из заголовка
Content-Disposition HTTP-запроса.
Атрибут доступен только для чтения и представляет
собой строку. Если клиент не передал имя файла,
значение может быть None. В отличие от
атрибута filename, который Bottle
нормализует и очищает от потенциально опасных
символов, raw_filename сохраняет
оригинальное имя без изменений.
Синтаксис
upload.raw_filename
Пример
Давайте выведем исходное имя загруженного файла:
from bottle import Bottle, request
app = Bottle()
@app.route('/upload', method='POST')
def upload():
upload = request.files.get('file')
return upload.raw_filename
Результат выполнения кода при загрузке файла
с именем report.pdf:
"report.pdf"
Пример
Давайте сравним исходное и нормализованное имя файла:
from bottle import Bottle, request
app = Bottle()
@app.route('/upload', method='POST')
def upload():
upload = request.files.get('file')
res = upload.raw_filename + ' | ' + upload.filename
return res
Результат выполнения кода для файла с полным
путём /home/user/article.txt:
"/home/user/article.txt | article.txt"
Пример
Давайте сохраним файл, используя исходное имя для формирования пути:
from bottle import Bottle, request
import os
app = Bottle()
@app.route('/upload', method='POST')
def upload():
upload = request.files.get('file')
name = os.path.basename(upload.raw_filename)
upload.save('/tmp/' + name)
return name
Результат выполнения кода при загрузке файла
article.txt:
"article.txt"
Смотрите также
-
класс
FileUpload,
который представляет загруженный файл -
атрибут
filename,
который хранит нормализованное имя файла -
метод
save,
который сохраняет загруженный файл на диск -
атрибут
content_type,
который хранит MIME-тип загруженного файла