Recuperar o arquivo real de um pedido http (para os.stat)

votos
2

Eu gostaria de recuperar os meta dados de um arquivo carregado por meio do uso de:

st = os.stat(file_path)

Entretanto, não tenho certeza de como analisar o atributo file_path da requisição http. Por exemplo, eu já usei:

request.FILES

mas depois obter:

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

Eu também serializo o pedido, assim:

serializer = FileSerializer(data=request.data)

Como eu obtenho o arquivo carregado no http reques?

Publicado 04/05/2020 em 11:50
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Embora seja questionável se esta é a coisa apropriada a fazer em geral antes do arquivo ser salvo em um local permanente (pode não ser aplicável ao armazenamento em nuvem, etc.), a resposta é:

Quando o arquivo carregado é armazenado temporariamente pelo Django na memória (se pequeno) ou em disco com manipuladores de upload.

Todos os UploadedFiles terão atributos como tamanho, nome.

Se o TemporaryFileUploadHandler foi usado para armazenar arquivos - este arquivo request.FILESserá TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile e terá temporary_file_path()método:

Respondeu 06/05/2020 em 18:47
fonte usuário

votos
0

Para recuperar o ficheiro real de um pedido http, pode usar isto:

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

onde XYZ é o valor do atributo do nome na etiqueta de entrada. Assim:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Respondeu 13/05/2020 em 00:18
fonte usuário

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