Python BaseHTTPServer CGIHTTPServer
Я пытаюсь реализовать простой HTTP-сервер с формой, позволяющей пользователю загрузить файл.
У меня есть три файла кода: - скрипт Python, создающий веб-сервер с BaseHTTPServer и CGIHTTPServer - файл HTML с моей формой - еще один скрипт Python, связанный с этой формой
Веб сервер:
#!/usr/bin/env python
# coding: utf-8
import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable() # enable CGI error reporting
PORT = 8000
server_address = ('', PORT)
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
handler.cgi_directories = ['cgi-bin']
httpd = server(server_address, handler)
httpd.serve_forever()
index.html:
<html>
<body>
<form enctype="multipart/form-data"
action="save_file.py" method="POST">
<p>File: <input type="file" name="filename"/></p>
<p><input type="submit" value="Send"/></p>
</form>
</body>
</html>
save_file.py (внутри папки cgi-bin):
#!/usr/bin/env python
# coding: utf-8
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
# Get filename
fileitem = form['filename']
# Test if file uploaded
if fileitem.filename:
message = 'ok'
else:
message = 'No file was uploaded'
print "Content-type: text/html"
print ""
print """
<html>
<body>
<p> %s </p
</body>
</html>
""" % message
Я могу запустить сервер, но когда я нажимаю Отправить для отправки, после (или нет), выбрав файл, у меня появляется следующее сообщение об ошибке:
Ошибка ответа
Код ошибки 501.
Сообщение: Может только POST в CGI скрипты.
Объяснение кода ошибки: 501 = Сервер не поддерживает эту операцию.