Ian Lewis avatar Ian Lewis committed 871c248

Updated the S3BotoStorageFile to wrap a StringIO object better. It now supports the read() method with as size attribute for chunked reading.

Comments (0)

Files changed (1)

storages/backends/s3boto.py

         self._mode = mode
         self.key = storage.bucket.get_key(name)
         self._is_dirty = False
-        self.file = StringIO()
+        self._file = None
 
     @property
     def size(self):
         return self.key.size
 
-    def read(self, *args, **kwargs):
-        self.file = StringIO()
-        self._is_dirty = False
-        self.key.get_contents_to_file(self.file)
-        return self.file.getvalue()
+    @property
+    def file(self):
+        if self._file is None:
+            self._file = StringIO()
+            self._is_dirty = False
+            self.key.get_contents_to_file(self._file)
+            self._file.seek(0)
+        return self._file
 
     def write(self, content):
         if 'w' not in self._mode:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.