В Django как обработать файл внутри request.FILES?

for file in request.FILES:
        print("")
        video_input_path = file
        img_output_path = 'output.jpg'
        subprocess.call(['ffmpeg', '-i', video_input_path, '-ss', '00:00:00.000', '-vframes', '1', img_output_path])
        print("")

Я пытаюсь создать миниатюру для файла (видео), загруженного через форму, это чисто питоновское решение для создания миниатюры из любого видео (работает и для изображений, но есть лучшее решение с PIL)

video_input_path = file

Как получить доступ к самому файлу? Насколько я знаю, моими единственными вариантами являются

file = request.FILES['filename']
file.name           # Gives name
file.content_type   # Gives Content type text/html etc
file.size           # Gives file's size in byte
file.read()         # Reads file

Вероятно, вам нужно вручную обработать загруженный файл (https://docs.djangoproject.com/es/4.0/topics/http/file-uploads/#basic-file-uploads). В общем случае Django использует InMemoryUploadedFile для маленьких файлов и TemporaryUploadedFile для больших. Если вы уверены, что файл достаточно большой, чтобы заставить использовать TemporaryUploadedFile, вы можете получить доступ к его пути через file.temporary_file_path() .

С другой стороны, я рекомендую использовать пакет PyAV вместо подпроцесса для вызова ffmpeg.

Вернуться на верх