Получение реального файла из http запроса (для os.stat)

голоса
2

Я хотел бы получить мета-данные загруженного файла с помощью:

st = os.stat(file_path)

Однако я не знаю, как разобрать атрибут file_path из http запроса. Например, я использовал:

request.FILES

но потом получить:

TypeError: stat: path should be string, bytes, os.PathLike or integer, not MultiValueDict

Я также сериализую запрос:

serializer = FileSerializer(data=request.data)

Как получить реально загруженный файл в http-запросе?

Задан 04/05/2020 в 11:50
источник пользователем
На других языках...                            


2 ответов

голоса
0

Хотя сомнительно, правильно ли это делать вообще до того, как файл _ будет сохранен в постоянное место (это может быть неприменимо к облачному хранилищу и т.д.), ответ на этот вопрос - да:

Когда загруженный файл временно хранится у Django либо в памяти (если она небольшая), либо на диске с обработчиками загрузки.

Все UploadedFiles будут иметь такие атрибуты, как размер, имя.

Если для хранения файла использовался TemporaryFileUploadHandler - то этот файл request.FILESбудет TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile и будет иметь temporary_file_path()метод:

Ответил 06/05/2020 в 18:47
источник пользователем

голоса
0

Для получения фактического файла из http-запроса вы можете воспользоваться этим:

if request.method == 'POST':
        uploaded_file = request.FILES['XYZ']
        fs = FileSystemStorage()
        server_file_name = fs.save(uploaded_file.name, uploaded_file)

где XYZ - это значение атрибута имени во входном теге. Вот так:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Ответил 13/05/2020 в 00:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more