A tényleges fájl letöltése a http kérésből (az os.stat számára)

szavazat
2

Szeretnék letölteni a feltöltött fájl metaadatait a következő felhasználással:

st = os.stat(file_path)

Nem tudom azonban, hogyan lehet a file_path attribútumot elemezni a http kérésből. Például:

request.FILES

de aztán kapja:

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

A kérést szintén sorosítom, így:

serializer = FileSerializer(data=request.data)

Hogyan szerezhetem be a ténylegesen feltöltött fájlt a http követelményekbe?

A kérdést 04/05/2020 11:50
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Bár kérdéses, hogy ez általában helyes-e, mielőtt a fájlt állandó helyre menti (előfordulhat, hogy nem alkalmazható a felhőtárolásra stb.), A válasz:

Ha a feltöltött fájlt a Django ideiglenesen tárolja, a memóriában (ha kicsi) vagy a lemezen feltöltési kezelőkkel .

Az összes feltöltött fájl olyan attribútumokkal rendelkezik, mint a méret , név .

Ha a TemporaryFileUploadHandler fájlt tárolták - ez a fájl a request.FILES TemporaryUploadedFile lesz, és lesz temporary_file_path() eljárás:

for f in request.FILES.getlist("file_field"):
    try:
        fstats = os.stat(f.temporary_file_path())
    except AttributeError:
        # do something
    # file processing logic
Válaszolt 06/05/2020 18:47
a forrás felhasználó

szavazat
0

A tényleges fájl lekéréséhez a http kérésből használhatja az alábbiakat:

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

ahol XYZ a név attribútum értéke a bemeneti címkében. Mint ez:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Válaszolt 13/05/2020 00:18
a forrás felhasználó

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