class Main(Component): def __init__( self ): Component.__init__(self) self.uploader = Uploader() @on(GET="") @on(GET="{path:any}") def get(self, request, path=None): if not path: path = "index.html" return request.respond(self.app().load(path)) @on(POST="upload") def upload( self, request ): upload_id = request.param("id") block_size = request.param("blocksize") or (64 * 1024) upload = self.uploader.upload(request, upload_id, block_size) upload.onCompleted(self.onUploadComplete) return request.respond(( "%s bytes read (%f%%)<br>" % (_.lastBytesRead, _.progress) for _ in upload )) @expose(GET="upload/progress?{params}") def uploadProgress(self, params): return self.uploader.get(params["id"]) def onUploadComplete( self, upload ): for name in upload.request.files(): file = upload.request.file(name) name = "uploaded-" + file.name print ("Saving uploaded file to: {0}".format(name)) with open(name, "wb") as f: f.write(file.data)
def __init__( self ): Component.__init__(self) self.uploader = Uploader()