Načítání skutečného souboru z požadavku http (pro os.stat)

hlasů
2

Chtěl bych načíst metadata nahraného souboru pomocí:

st = os.stat(file_path)

Nejsem si však jistý, jak analyzovat atribut file_path z požadavku http. Například jsem použil:

request.FILES

ale pak získejte:

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

Žádost také serializuji takto:

serializer = FileSerializer(data=request.data)

Jak získám skutečně nahraný soubor v požadavcích http?

Položena 04/05/2020 v 11:50
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

I když je sporné, zda se jedná o správnou věc obecně, než se soubor__ uloží do trvalého umístění (nemusí se vztahovat na cloudové úložiště atd.), Odpověď zní:

Když je nahraný soubor dočasně uložen Djangem buď v paměti (pokud je malý) nebo na disku s obslužnými programy pro upload .

Všechny UploadedFiles budou mít atributy, jako je velikost , název .

Pokud byl k uložení souboru použit TemporaryFileUploadHandler - tento soubor v request.FILES bude TemporaryUploadedFile a bude mít temporary_file_path() metoda:

for f in request.FILES.getlist("file_field"):
    try:
        fstats = os.stat(f.temporary_file_path())
    except AttributeError:
        # do something
    # file processing logic
Odpovězeno 06/05/2020 v 18:47
zdroj uživatelem

hlasů
0

Pro načtení skutečného souboru z požadavku http můžete použít toto:

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

kde XYZ je hodnota atributu name ve vstupní značce. Takhle:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Odpovězeno 13/05/2020 v 00:18
zdroj uživatelem

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