Recuperar el archivo actual de una solicitud http (para os.stat)

votos
2

Me gustaría recuperar los metadatos de un archivo subido mediante..:

st = os.stat(file_path)

Sin embargo, no estoy seguro de cómo analizar el atributo file_path de la solicitud http. Por ejemplo, he usado:

request.FILES

pero luego obtengo:

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

También serializo la solicitud, por ejemplo:

serializer = FileSerializer(data=request.data)

¿Cómo obtengo el archivo subido en las solicitudes http?

Publicado el 04/05/2020 a las 11:50
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Aunque es cuestionable si esto es lo correcto en general antes de que el archivo__ se guarde en una ubicación permanente (puede no ser aplicable al almacenamiento en la nube, etc.), la respuesta es:

Cuando se sube un archivo, Django lo almacena temporalmente en la memoria (si es pequeño) o en un disco con manejadores de subida.

Todos los UploadedFiles tendrán atributos como tamaño, nombre.

Si se usó el TemporaryFileUploadHandler para almacenar el archivo - este archivo en request.FILESserá TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile y tendrá temporary_file_path()método:

Respondida el 06/05/2020 a las 18:47
fuente por usuario

votos
0

Para recuperar el archivo actual de una solicitud http puedes usar esto:

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

donde XYZ es el valor del atributo del nombre en la etiqueta de entrada. Como esto:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Respondida el 13/05/2020 a las 00:18
fuente por usuario

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