Recupero del file effettivo da una richiesta http (per os.stat)

voti
2

Vorrei recuperare i metadati di un file caricato con l'uso di:

st = os.stat(file_path)

Tuttavia non sono sicuro di come analizzare l'attributo file_path dalla richiesta http. Per esempio, ho usato:

request.FILES

ma poi ricevo:

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

Ho anche serializzato la richiesta, in questo modo:

serializer = FileSerializer(data=request.data)

Come ottengo il file effettivamente caricato nelle richieste http?

È pubblicato 04/05/2020 alle 11:50
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

Mentre è discutibile se questa sia una cosa corretta da fare in generale prima che il file__ sia salvato in una posizione permanente (potrebbe non essere applicabile al cloud storage ecc.), la risposta è:

Quando il file caricato è temporaneamente memorizzato da Django o in memoria (se piccolo) o su disco con i gestori di upload.

Tutti i UploadedFiles avranno attributi come dimensione, nome.

Se TemporaryFileUploadHandler è stato utilizzato per memorizzare il file - questo file in request.FILESsarà TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile e avrà temporary_file_path()metodo:

Risposto il 06/05/2020 a 18:47
fonte dall'utente

voti
0

Per recuperare il file effettivo da una richiesta http si può utilizzare questo:

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

dove XYZ è il valore dell'attributo name nel tag di input. In questo modo:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Risposto il 13/05/2020 a 00:18
fonte dall'utente

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