Henter den faktiske filen fra en http-forespørsel (for os.stat)

stemmer
2

Jeg vil hente metadataene til en opplastet fil ved å bruke:

st = os.stat(file_path)

Jeg er imidlertid ikke sikker på hvordan jeg skal analysere file_path-attributtet fra http-forespørselen. For eksempel har jeg brukt:

request.FILES

men så få:

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

Jeg serialiserer også forespørselen, slik:

serializer = FileSerializer(data=request.data)

Hvordan får jeg den faktiske opplastede filen på http-kravene?

Publisert på 04/05/2020 klokken 11:50
kilden bruker
På andre språk...                            


2 svar

stemmer
0

Selv om det er tvilsomt om dette er riktig å gjøre generelt før __- filen blir lagret på permanent plassering (det kan ikke hende det er aktuelt for skylagring osv.), Er svaret:

Når opplastet fil er midlertidig lagret av Django, enten i minnet (hvis det er lite) eller på disk med opplastingshåndterere .

Alle UploadedFiles vil ha attributter som størrelse , navn .

Hvis TemporaryFileUploadHandler ble brukt til å lagre fil - denne filen i request.FILES vil være TemporaryUploadedFile og vil ha temporary_file_path() metode:

for f in request.FILES.getlist("file_field"):
    try:
        fstats = os.stat(f.temporary_file_path())
    except AttributeError:
        # do something
    # file processing logic
Svarte 06/05/2020 kl. 18:47
kilden bruker

stemmer
0

For å hente den faktiske filen fra en http-forespørsel, kan du bruke denne:

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

der XYZ er verdien på navneattributtet i inndatataggen. Som dette:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Svarte 13/05/2020 kl. 00:18
kilden bruker

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