- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我以前从未设置过服务器(更不用说 python 服务器了),我有点迷茫。我如何使用以下代码?我试图放入 cgi bin 目录,但没有用。它返回内部服务器错误。看看这个here
#!/usr/bin/env python
#
# Funf: Open Sensing Framework
# Copyright (C) 2010-2011 Nadav Aharony, Wei Pan, Alex Pentland.
# Acknowledgments: Alan Gardner
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from SocketServer import ThreadingMixIn
import sys
import cgi
import urlparse
import os.path
import shutil
import time
server_dir = os.path.dirname(__file__)
config_path = '/config'
config_file_path = os.path.join(server_dir, 'config.json')
upload_path = '/data'
upload_dir = os.path.join(server_dir, 'uploads')
def read_config():
config = None
try:
with open(config_file_path) as config_file:
config = config_file.read()
except IOError:
pass
return config
def backup_file(filepath):
shutil.move(filepath, filepath + '.' + str(int(time.time()*1000)) + '.bak')
def write_file(filename, file):
if not os.path.exists(upload_dir):
os.mkdir(upload_dir)
filepath = os.path.join(upload_dir, filename)
if os.path.exists(filepath):
backup_file(filepath)
with open(filepath, 'wb') as output_file:
while True:
chunk = file.read(1024)
if not chunk:
break
output_file.write(chunk)
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
parsed_url = urlparse.urlparse(self.path)
if parsed_url.path == config_path:
config = read_config()
if config:
self.send_response(200)
self.end_headers()
self.wfile.write(config)
else:
self.send_error(500)
elif parsed_url.path == upload_path:
self.send_error(405)
else:
self.send_error(404)
def do_POST(self):
parsed_url = urlparse.urlparse(self.path)
path = parsed_url.path
ctype, pdict = cgi.parse_header(self.headers['Content-Type'])
if path == upload_path:
if ctype=='multipart/form-data':
form = cgi.FieldStorage(self.rfile, self.headers, environ={'REQUEST_METHOD':'POST'})
try:
fileitem = form["uploadedfile"]
if fileitem.file:
try:
write_file(fileitem.filename, fileitem.file)
except Exception as e:
print e
self.send_error(500)
else:
self.send_response(200)
self.end_headers()
self.wfile.write("OK")
return
except KeyError:
pass
# Bad request
self.send_error(400)
elif parsed_url.path == config_path:
self.send_error(405)
else:
self.send_error(404)
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread."""
if __name__ == '__main__':
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('', port)
httpd = ThreadedHTTPServer(server_address, RequestHandler)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
print 'use <Ctrl-C> to stop'
httpd.serve_forever()
最佳答案
如果你想在 Apache 之类的东西上运行 CGI(而不是通过上面粘贴的自定义服务器代码),你可以在 (.py) CGI 启用目录中创建一个这样的 .py 文件。
#!/usr/bin/env python
print "Content-Type: text/html"
print
print 'Hello World'
如果您使用的是 Apache,这里是 some info on how to set up CGI executables .
编辑:(正如 Adrien P. 所说,Python 脚本应该是可执行的。)
关于python - 如何运行 Python CGI 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929848/
嗨,我是一名学生,正在实习。不幸的是,我的公司要我用 C 编写 CGI 程序。我不知道他们为什么要使用它。无论如何,我必须在接下来的 2 个月内学习并应用它。我如何以及如何学习 CGI 编程。我有 2
CGI 脚本应该可以访问由 Web 服务器设置的环境变量列表。他们的名字是什么? 最佳答案 有关 CGI 规范,请参阅 RFC 3875,其中包含您需要的所有信息。 :-) 来自 RFC: met
CGI 是通用网关接口(interface)。顾名思义,它是所有事物的“通用”网关接口(interface)。从名字上看,它是如此琐碎和幼稚。我觉得我明白了这一点,每次遇到这个词都有这样的感觉。但坦白
我试图在 uhttpd 服务器 上执行 Cgi-Cpp 程序,该服务器运行 OpenWRT 安装。 Cgi 文件是 /www/cgi-bin/sample.cgi 并且也有执行权限。我正在尝试使用 H
我在目录下有一个 cpanel 帐户: /home/username/ 和一个文件: /home/username/public_html/ 这是index.php 其中包含:
我正在尝试修改我的 EasyPHP 以在 CGI 模式下运行。 根据此链接:http://www.easyvitools.com/phpserial/php_ser_reference.html我必须
有没有办法阻止 lighttpd 将 POST 缓冲到 CGI 可执行文件? 在我看来,所有请求在转发到 CGI 可执行文件之前都已完全缓冲在磁盘上,这使我无法以基于流的方式处理输入。 澄清一下,我只
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我正在设计一个应用程序,它将由 3-4 个服务组成,这些服务作为单独的进程运行并通过合适的 IPC 链接。该系统将有一个网络界面,我想使用那里的任何网络服务器。 应该在某个 URL 下访问 Web 界
这更多是为了理解 web 应用程序中的请求-响应机制。客户端向 Web 应用程序发送请求 (GET/POST)。 Web 应用程序有一个正在运行的应用程序服务器,该服务器用作应用程序特定程序的容器。我
这个问题在这里已经有了答案: Why does my system call to another CGI script work on the command line but not when
我遇到了这个问题:当我访问 URL“bobbabr.org”时,这是正常的,但是当我访问子域“ibobba.bobbabr.org”时,我被重定向到“/cgi-sys/defaultwebpage.c
我在虚拟机上运行的 Win 2k8 R2 上安装了 Mercurial 1.8.1、Python 2.6.6。我试过从 msi、源和使用 tortisehg 安装。命令行 Hg 工作正常,但在运行 h
我正在使用 cgi-bin 并显示一张 map ,其中包含来自 Postgres 数据库的一些数据。 但是,我需要引入一个输入,用户可以在其中选择一个日期,这个日期将从数据库中过滤结果。 我有输入并通
我目前正在尝试为我在带有 Ubuntu 的虚拟机上运行的实际本地网页创建一个简单的登录页面。 我创建了 LoginPage.html在位置 /var/www/html . 然后 HTML 文件调用 l
有谁知道如何配置 lighttpd 来处理普通的 CGI 可执行文件,在这种情况下是用 C 编写的?我已经编译了一个测试程序(test.cgi)并将它放在$HOME/public_html/cgi-b
我有一个 scriptA.cgi,它调用 scriptB.cgi。 scriptB.cgi 需要一个参数。 我都试过了在我尝试过的 scriptA.cgi 中: `perl -l scriptB.cg
我正在尝试让 Python、cgi 模块、ajax/javascript 组合工作。由于我的服务器访问的性质(基本上是租用的网站空间),我无法安装 django 或任何其他网络框架之类的东西。我现在坚
我在 Ubuntu 服务器上安装了标准的 Apache2。默认设置使用 ScriptAlias 将 /cgi-bin/ 引用到 /usr/lib/cgi-bin/。如果我将 Python CGI 脚本
我是一名优秀的程序员,十分优秀!