diff --git a/software_objects/file-upload/upload.cgi b/software_objects/file-upload/upload.cgi
new file mode 100644
index 0000000..50773e3
--- /dev/null
+++ b/software_objects/file-upload/upload.cgi
@@ -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}
".format(bytes, filename))
+ print ("upload another")
+else:
+ print ("""
+
+