| #!/usr/bin/env python3 | |
| import os | |
| import sys | |
| from requestparser import get_request_params | |
| forms, files = get_request_params() | |
| status = '200 Ok' | |
| # Test if the file was uploaded | |
| if 'file' in files: | |
| fitem = files['file'] | |
| # strip leading path from file name to avoid directory traversal attacks | |
| fname = fitem.file_name | |
| fpath = f'{os.environ["DOCUMENT_ROOT"]}/files/{fname}' | |
| fitem.save_to(fpath) | |
| message = "The file %s was uploaded successfully" % (fname) | |
| print("Status: 201 Created") | |
| print("Content-Type: text/html") | |
| print("Location: %s://%s/files/%s" % (os.environ["REQUEST_SCHEME"], os.environ["HTTP_HOST"], fname)) | |
| print("") | |
| print("<html><body><p>%s</p></body></html>" % (message)) | |
| elif 'remove' in forms: | |
| remove = forms['remove'] | |
| try: | |
| fname = os.path.basename(remove) | |
| os.remove('./files/' + fname) | |
| message = 'The file "' + fname + '" was removed successfully' | |
| except OSError as e: | |
| message = 'Error removing ' + fname + ': ' + e.strerror | |
| status = '404 File Not Found' | |
| print("Status: %s" % (status)) | |
| print(""" | |
| Content-Type: text/html | |
| <html><body> | |
| <p>%s</p> | |
| </body></html>""" % (message)) | |
| else: | |
| message = '''\ | |
| Upload File<form method="POST" enctype="multipart/form-data"> | |
| <input type="file" name="file"> | |
| <button type="submit">Upload</button></form> | |
| ''' | |
| print("Status: %s" % (status)) | |
| print("""\ | |
| Content-Type: text/html | |
| <html><body> | |
| <p>%s</p> | |
| </body></html>""" % (message)) | |