file upload cgi
parent
de67c3edc8
commit
ce1d03ce1c
@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import cgitb; cgitb.enable()
|
||||||
|
import cgi, os
|
||||||
|
|
||||||
|
|
||||||
|
env = os.environ
|
||||||
|
method = os.environ.get("REQUEST_METHOD")
|
||||||
|
|
||||||
|
print ("Content-type:text/html;charset=utf-8")
|
||||||
|
print ()
|
||||||
|
# print "Hello", method
|
||||||
|
# cgi.print_environ()
|
||||||
|
|
||||||
|
UPLOADS = "/var/www/uploads/"
|
||||||
|
|
||||||
|
def upload (inputname, upload_dir):
|
||||||
|
form = cgi.FieldStorage()
|
||||||
|
if not form.has_key(inputname): return
|
||||||
|
fileitem = form[inputname]
|
||||||
|
if not fileitem.file: return
|
||||||
|
fp = os.path.join(upload_dir, fileitem.filename)
|
||||||
|
with open(fp, 'wb') as fout:
|
||||||
|
bytes = 0
|
||||||
|
while 1:
|
||||||
|
chunk = fileitem.file.read(100000)
|
||||||
|
if not chunk: break
|
||||||
|
bytes += len(chunk)
|
||||||
|
fout.write(chunk)
|
||||||
|
return bytes, fileitem.filename
|
||||||
|
|
||||||
|
if method == "POST":
|
||||||
|
result = upload("thefile", UPLOADS)
|
||||||
|
if result:
|
||||||
|
bytes, filename = result
|
||||||
|
print ("{0} bytes written to {1}<br />".format(bytes, filename))
|
||||||
|
print ("<a href="">upload another</a>")
|
||||||
|
else:
|
||||||
|
print ("""<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<form method="post" action="" enctype="multipart/form-data">
|
||||||
|
<input type="file" name="thefile" /><input type="submit" />
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
""")
|
Loading…
Reference in New Issue