You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
Plaintext
71 lines
1.8 KiB
Plaintext
10 years ago
|
#!/usr/bin/env python
|
||
|
|
||
|
import cgitb; cgitb.enable()
|
||
|
import cgi, os, sys, json
|
||
|
from project import Project
|
||
|
|
||
|
|
||
|
fs =cgi.FieldStorage()
|
||
|
project = fs.getvalue("p", "")
|
||
|
proj = Project(project)
|
||
|
method = os.environ.get("REQUEST_METHOD")
|
||
|
|
||
|
# print "Hello", method
|
||
|
# cgi.print_environ()
|
||
|
|
||
|
UPLOADS = "/home/murtaugh/projects/DPT/hybrideditor/projects/uploads/"
|
||
|
|
||
|
def upload (form, inputname, upload_dir):
|
||
|
if not form.has_key(inputname): return
|
||
|
fileitems = form[inputname]
|
||
|
if not isinstance(fileitems, list):
|
||
|
fileitems = [fileitems]
|
||
|
ret = []
|
||
|
for fileitem in fileitems:
|
||
|
if not fileitem.file:
|
||
|
continue
|
||
|
if not fileitem.filename:
|
||
|
continue
|
||
|
fp = os.path.join(upload_dir, fileitem.filename)
|
||
|
fout = file (fp, 'wb')
|
||
|
bytes = 0
|
||
|
while 1:
|
||
|
chunk = fileitem.file.read(100000)
|
||
|
if not chunk: break
|
||
|
bytes += len(chunk)
|
||
|
fout.write (chunk)
|
||
|
fout.close()
|
||
|
ret.append((fileitem.filename, bytes))
|
||
|
return ret
|
||
|
|
||
|
if method == "POST":
|
||
|
result = upload(fs, "files[]", proj.fullpath)
|
||
|
if result:
|
||
|
print "Content-type: application/json"
|
||
|
print ""
|
||
|
print json.dumps(result)
|
||
|
sys.exit(0)
|
||
|
|
||
|
# for filename, bytes in result:
|
||
|
# print "{0} bytes written to {1}<br />".format(bytes, filename)
|
||
|
else:
|
||
|
print "Content-type:text/html;charset=utf-8"
|
||
|
print
|
||
|
print "No upload"
|
||
|
print "<a href="">upload another</a>"
|
||
|
else:
|
||
|
|
||
|
print "Content-type:text/html;charset=utf-8"
|
||
|
print
|
||
|
print """<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
</head>
|
||
|
<body>
|
||
|
<form method="post" action="" enctype="multipart/form-data">
|
||
|
<input type="file" name="file[]" multiple><input type="submit">
|
||
|
<input type="hidden" name="p" value="{0}>
|
||
|
</form>
|
||
|
</body>
|
||
|
</html>
|
||
|
""".format(project)
|