Abrufen der eigentlichen Datei aus einer http-Anfrage (für os.stat)

stimmen
2

Ich möchte die Metadaten einer hochgeladenen Datei mit Hilfe von abrufen:

st = os.stat(file_path)

Ich bin mir jedoch nicht sicher, wie ich das file_path-Attribut aus der http-Anforderung parsen soll. Ich habe zum Beispiel verwendet:

request.FILES

aber dann bekommen:

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

Ich serialisiere die Anfrage auch wie folgt:

serializer = FileSerializer(data=request.data)

Wie erhalte ich die tatsächlich hochgeladene Datei in den http-Anfragen?

Veröffentlicht am 04/05/2020 um 11:50
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
0

Es ist zwar fraglich, ob dies generell richtig ist, bevor eine Datei an einem permanenten Speicherort gespeichert wird (dies gilt möglicherweise nicht für Cloud-Speicher usw.), aber die Antwort lautet

Wenn hochgeladene Datei wird vorübergehend von Django entweder im Speicher (wenn klein) oder auf der Festplatte mit Upload-Handler gespeichert.

Alle UploadedFiles werden Attribute wie Größe, Name haben.

Wenn TemporaryFileUploadHandler zum Speichern einer Datei verwendet wurde - wird diese Datei in request.FILESTemporaryUploadedFile" rel="nofollow noreferrer">TemporaryUploadedFile und wird temporary_file_path()Methode haben:

Beantwortet am 06/05/2020 um 18:47
quelle vom benutzer

stimmen
0

Um die eigentliche Datei von einer http-Anfrage abzurufen, können Sie dies verwenden:

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

wobei XYZ der Wert des Namensattributs im Input-Tag ist. Etwa so:

<input type="file" name="XYZ" aria-label="Upload File" id="_upload_file">
Beantwortet am 13/05/2020 um 00:18
quelle vom benutzer

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