2017-06-23 1 views
0

Ich habe ein InMemoryUploadedFile-Objekt und wenn ich eine .read() darauf mache, wird es seinen Inhalt verlieren. Ist es irgendwie möglich, diesen Inhalt zweimal vom selben Objekt zu lesen? Ich habe versucht, .copy() zu kopieren, aber das sollte natürlich nicht funktionieren.InMemoryUploadedFile zweimal lesen

Wenn es nicht möglich ist, kann ich den Inhalt irgendwie zum gleichen Objekt zurückbringen?

Grund dafür: Für eine Django-Form möchte eine prevalidation() -Methode den Inhalt lesen, aber wenn, dann kann ich sie später nicht speichern. Leistung zählt hier nicht.

+0

etwas tun, 'foo = ''' ' read_once = InMemoryUploadedFile.read()' ' foo = foo + read_once ' ' #so, jetzt können Sie foo als zweites Mal benutzen' – Stack

+0

Damit ist das Problem, dass es ein neues Objekt sein wird. – user2194805

Antwort

3

Sie sollten in der Lage sein seek(0) auf die zugrunde liegende Dateiobjekt zu nennen:

my_file_obj.file.seek(0) 
+0

Danke, das ist was ich brauchte. – user2194805

+0

'InMemoryUploadedFile' implementiert die vollständige Dateischnittstelle, so dass Sie einfach' my_file_obj.seek (0) 'aufrufen können. – knbk