Есть функция, которая сохраняет файл. С файловым именем практически никаких манипуляций не производилось. Мне нужно знать с какими символами могут вылезти подводные камни. Подскажите?
Вот собственно функция:
class UploadView(APIView):
permission_classes = (IsAuthenticated,)
parser_classes = (MultiPartParser, FormParser,)
def post(self, request, format=None):
book = request.FILES['file']
directory = os.path.join(settings.MEDIA_ROOT, 'books')
os.makedirs(directory, exist_ok=True)
filename = str(book)
files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
i = 2
while True:
if filename in files:
p = str(book).rpartition('.')
filename = '{}_{}.{}'.format(p[0], i, p[2])
i += 1
else:
break
filename = os.path.join(directory, filename)
with open(filename, 'wb+') as file:
for chunk in book:
file.write(chunk)
return Response(status=status.HTTP_201_CREATED)