Python BaseHTTPServer CGIHTTPServer

时间:2017-03-06 16:02:35

标签: python post cgi basehttpserver cgihttpserver

我正在尝试使用允许用户上传文件的表单来实现一个简单的HTTP服务器。

我有三个代码文件: - 使用BaseHTTPServer和CGIHTTPServer创建Web服务器的python脚本 - 我的表单的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 =服务器不支持此操作。

0 个答案:

没有答案