Использовал свою реализацию upload_to-метода для формирования пути сохранения файлов в FileField-поле модели на основании заголовка сущности (чтобы файлики сохранялись в подпапки контрагентов). При разработке под linux всё было отлично, но в продакшене на одной windows-машине периодически валилась загрузка файлов
File "C:\python27\lib\site-packages\django\core\files\storage.py", line 168, in _save
os.makedirs(directory)
File "C:\python27\lib\os.py", line 150, in makedirs
makedirs(head, mode)
File "C:\python27\lib\os.py", line 157, in makedirs
mkdir(name, mode)
WindowsError: [Error 123] Синтаксическая ошибка в имени файла,: u'C:\\inetpub\\wwwroot\\ZooDjangoProject\\media\\file\\\blabla "blabla"'
Выяснилось, что дело в кавычках в имени файлов, который есть запретный символ в винде. Пришлось вспомнить и остальные ограничения, после чего родилось прижившееся экспресс-решение.
def removebadchars(value):
for c in r'\/:*?"<>|':
value = value.replace(c, '')
return value
...
filename = removebadchars(filename)
Комментариев нет:
Отправить комментарий