Pobieranie rzeczywistego pliku z zapytania http (dla os.stat)

głosy
2

Chciałbym odzyskać meta dane przesłanego pliku za pomocą:

st = os.stat(file_path)

Nie jestem jednak pewien, jak przetworzyć atrybut file_pathute z żądania http. Na przykład, użyłem go:

request.FILES

ale potem dostać:

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

Ja również serializuję żądanie, tak jak w tym przypadku:

serializer = FileSerializer(data=request.data)

Jak mogę uzyskać rzeczywisty wgrany plik w reques http?

Utwórz 04/05/2020 o 11:50
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
0

Podczas gdy wątpliwe jest, czy jest to ogólnie właściwe, zanim plik zostanie zapisany na stałe (może nie mieć zastosowania do przechowywania w chmurze itp.), odpowiedź brzmi:

Kiedy wgrany plik jest tymczasowo przechowywany przez Django w pamięci (jeśli jest mały) lub na dysku z obsługą wgrywania.

Wszystkie pliki UploadedFiles będą miały atrybuty takie jak rozmiar, nazwa.

Jeśli TemporaryFileUploadHandler był używany do przechowywania pliku - plik ten request.FILESbędzie TemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile i będzie posiadać temporary_file_path()metodę:

Odpowiedział 06/05/2020 o 18:47
źródło użytkownik

głosy
0

Aby pobrać rzeczywisty plik z zapytania http, możesz tego użyć:

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

gdzie XYZ jest wartością atrybutu name w znaczniku wejściowym. W ten sposób:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Odpowiedział 13/05/2020 o 00:18
źródło użytkownik

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