Загрузка файла не работает при указании абсолютного пути при использовании текстового поля для загрузки python Django - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть веб-приложение, написанное на Python и Django фреймворке, которое позволяет загружать файл. Путь к загруженному файлу отображается в текстовом поле. Когда я просматриваю и выбираю файл, он отображается как c: \ fakepath \ Sample.docx в текстовом поле, и когда я нажимаю кнопку загрузки, загрузка файла происходит без проблем.

Но если я укажу абсолютный путь в текстовом поле как C: \ xxx \ xxx \ xxx \ sample.docx и нажму кнопку загрузки, файл не будет загружен.

Html код для создания загрузки в текстовом поле:

<input id="txt" type = "text" value = "Choose File" size="40" align="center"
       onclick ="javascript:document.getElementById('file').click();">
<input id = "file" type="file" style='visibility: hidden;' name="file1" 
       onchange="ChangeText(this, 'txt'); Filevalidation()">

Python код при попытке извлечь загруженный файл

file = request.FILES['file1']

Ошибка при указании абсолютного пути:

повышение MultiValueDictKeyError (ключ) django .utils.datastructures.MultiValueDictKeyError: 'file1'

1 Ответ

0 голосов
/ 21 апреля 2020

Это происходит потому, что вы не отправляете какой-либо фактический файл в запросе, просто набирая путь к файлу, поэтому ключ 'file1' не заполняется в словаре request.FILE. Таким образом, вы можете сделать:

file = request.FILES.get('file1', '')

Это будет обрабатывать случай, когда этот ключ не существует, и давать значение по умолчанию (если не передано, по умолчанию будет Нет).

Но все же Делая это, просто избегайте сообщения об ошибке, но файл все равно не будет отправлен. Вы не можете отправить файл на сервер, просто записав путь к нему, где он хранится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...