Python BaseHTTPServer CGIHTTPServer

Python BaseHTTPServer CGIHTTPServer,python,post,cgi,basehttpserver,cgihttpserver,Python,Post,Cgi,Basehttpserver,Cgihttpserver,我正在尝试实现一个简单的HTTP服务器,它带有一个表单,允许用户上传文件 我有三个代码文件: -使用BaseHTTPServer和CGIHTTPServer创建Web服务器的python脚本 -带有我的表单的html文件 -另一个链接到该表单的python脚本 Web服务器: #!/usr/bin/env python # coding: utf-8 import BaseHTTPServer import CGIHTTPServer import cgitb; cgitb.enable(

我正在尝试实现一个简单的HTTP服务器,它带有一个表单,允许用户上传文件

我有三个代码文件: -使用BaseHTTPServer和CGIHTTPServer创建Web服务器的python脚本 -带有我的表单的html文件 -另一个链接到该表单的python脚本

Web服务器:

#!/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>

文件:

保存_file.py(在cgi bin文件夹中):

#/usr/bin/env python
#编码:utf-8
导入cgi,操作系统
进口cgib;cgib.enable()
form=cgi.FieldStorage()
#获取文件名
fileitem=form['filename']
#测试文件是否已上载
如果为fileitem.filename:
消息='确定'
其他:
消息='未上载任何文件'
打印“内容类型:文本/html”
打印“”
打印“”

%s您在CGI脚本文件上设置了执行位了吗?请参阅中的示例以了解另一个示例,该示例对设置执行位很有帮助是的,我在CGI脚本上设置了执行位。您提供的链接是我在编写此小服务器之前阅读的一个示例尝试将save_file.py脚本移到CGI bin目录之外您设置了吗您的CGI脚本文件上的执行位?另一个示例请参见中的示例,该示例会设置执行位是的,我在CGI脚本上设置了执行位。您提供的链接是我在编写此小服务器之前阅读的一个示例尝试将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