В 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.