From 52b40a398aed35edfc135bf30410c7823593d85c Mon Sep 17 00:00:00 2001 From: ianb Date: Sun, 17 Jul 2005 22:56:11 +0000 Subject: Implemented proper file upload --- examples/filebrowser/pathobj.py | 29 ++++++++++++++++++++++++++--- examples/filebrowser/templates/directory.pt | 3 +-- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'examples/filebrowser') diff --git a/examples/filebrowser/pathobj.py b/examples/filebrowser/pathobj.py index 8b57504..34bc1e2 100644 --- a/examples/filebrowser/pathobj.py +++ b/examples/filebrowser/pathobj.py @@ -86,6 +86,15 @@ class Path(sitepage.SitePage): def __repr__(self): return '<%s %s>' % (self.__class__.__name__, self.path) + def size_text(self): + st = os.stat(self.filename) + size = st.st_size + if size < 1024: + return '%i bytes' % size + if size < 1024*1024: + return '%iKb' % (size/1024) + return '%.1fMb' % (size/1024.0/1024.0) + def setup(self): self.title = 'File: %s' % self.basename self.options.parent = { @@ -341,6 +350,9 @@ class Dir(Path): upload_id = itertools.count(random.randint(0, 15000)) + def size_text(self): + return None + def setup_file(self): files = [] for filename in sorted(os.listdir(self.filename)): @@ -358,9 +370,11 @@ class Dir(Path): files[-1]['name'] += '/' self.options.files = files self.options.upload_id = self.upload_id.next() - self.options.upload_url = self.globalurl( - 'uploader', upload_id=self.options.upload_id, - redirect='/') + # With upload progress, something like this will be necessary: + #self.options.upload_url = self.globalurl( + # 'uploader', upload_id=self.options.upload_id, + # redirect='/') + self.options.upload_url = self.pathurl(action='upload') def action_view_raw(self): self.action_view() @@ -368,5 +382,14 @@ class Dir(Path): def action_view(self): self.view = 'directory.pt' + def action_upload(self): + file = self.fields.file + filename = file.filename + content = file.value + f = self.join(filename) + f.write_text(content) + self.message.write('File %s uploaded' % filename) + self.redirect(self.pathurl(f.path, action='view')) + PathContext.register_class(Dir) diff --git a/examples/filebrowser/templates/directory.pt b/examples/filebrowser/templates/directory.pt index fb49642..1418ef0 100644 --- a/examples/filebrowser/templates/directory.pt +++ b/examples/filebrowser/templates/directory.pt @@ -40,8 +40,7 @@ There are no files in this directory
-Upload: - +Upload:
-- cgit v1.2.1