Ticket #1873: uploadserver.py

File uploadserver.py, 1.1 KB (added by lennyg, 8 years ago)

uploatserver.py

Line 
1#!/usr/bin/python
2
3import os
4from twisted.internet import reactor
5from twisted.web2 import server, http, resource, channel
6from twisted.web2 import http_headers, responsecode
7from twisted.web2 import iweb, stream
8
9SAVEDIR = "/tmp" 
10READSIZE=8192
11
12class UploadFile(resource.PostableResource):
13        def render(self, ctx):
14                request = iweb.IRequest(ctx)
15                filename = request.files['filename'][0][0]
16                file = request.files['filename'][0][2]
17
18                filestream = stream.FileStream(file)
19                dest = os.path.join(SAVEDIR,filename)
20                destfile = os.fdopen(os.open(dest,
21                                os.O_WRONLY | os.O_CREAT | os.O_EXCL,
22                                0644), 'w', 0)
23                stream.readIntoFile(filestream, destfile)
24
25                msg = "saved %s to %s" % (filename, dest)
26                print msg
27                return http.Response(stream="%s" % msg)
28
29class Toplevel(resource.Resource):
30        addSlash = True
31        def render(self, ctx):
32                return http.Response(responsecode.OK,
33                                {'content-type': http_headers.MimeType('text', 'html')},
34                                "Hello")
35       
36        child_uploadfile = UploadFile()
37
38if __name__ == "__main__":
39        site = server.Site(Toplevel())
40        reactor.listenTCP(1080, channel.HTTPFactory(site))
41        reactor.run()