Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让WSGI.py以静态html格式提供图像?_Python_Image_Jpeg_Wsgi - Fatal编程技术网

Python 如何让WSGI.py以静态html格式提供图像?

Python 如何让WSGI.py以静态html格式提供图像?,python,image,jpeg,wsgi,Python,Image,Jpeg,Wsgi,为非营利组织管理基于Python(wsgi)的站点&出于历史原因,我们希望从一个子域提供旧的(静态)HTML 以下是wsgi.py: (请注意,html/css文件位于static/文件夹中,其他文件位于static/的子文件夹中) (这为应用的所有文本和样式提供服务,但为图像提供alt文本) def应用程序(环境,启动响应): #一些用于检查传入内容的调试查询: 如果环境[“查询字符串”]=“环境”: 启动_响应('200正常',[('Content-Type', 'text/html;cha

为非营利组织管理基于Python(wsgi)的站点&出于历史原因,我们希望从一个子域提供旧的(静态)HTML

以下是wsgi.py:

(请注意,html/css文件位于static/文件夹中,其他文件位于static/的子文件夹中) (这为应用的所有文本和样式提供服务,但为图像提供alt文本)

def应用程序(环境,启动响应):
#一些用于检查传入内容的调试查询:
如果环境[“查询字符串”]=“环境”:
启动_响应('200正常',[('Content-Type',
'text/html;charset=utf-8')])
返回[“”,
"环境",,
报告主任(环境),
""]
如果环境[“查询字符串”]=“请求”:
启动_响应('200正常',[('Content-Type',
'text/html;charset=utf-8')])
返回[“”,
“传入请求转储”,
“脚本名称:”+env[“脚本名称”]+“
”, “路径信息:”+env[“路径信息”]+“
”, “查询字符串:”+env[“查询字符串”]+“
”, ""] #常规服务器代码(运行正常): 尝试: 如果env[“PATH_INFO”]==“/”:#根,没有尾随“/” htmlfile=open(“static/index.html”) 启动_响应('200正常',[('Content-Type', 'text/html;charset=utf-8')]) 返回[htmlfile.read()] elif env[“路径信息”].endswith(“.html”): htmlfile=open(“静态”+env[“路径信息”])# 启动_响应('200正常',[('Content-Type', 'text/html;charset=utf-8')]) 返回[htmlfile.read()] elif env[“路径信息”].endswith(“.css”): cssfile=open(“静态”+env[“路径信息”])# 启动_响应('200正常',[('Content-Type', 'text/css;charset=utf-8')]) 返回[cssfile.read()] #这将生成“内部服务器错误:” elif env[“路径信息”].endswith(“.jpg”)或 env[“路径信息”].endswith(“.JPG”): JPEG文件=打开(“静态”+env[“路径信息”])# jpegdata=jpegfile.read() 开始响应('200 OK',[('Content-Type','image/jpeg'), ('Accept-Ranges','bytes'), ('Content-Length',str(len(jpegdata)), (“连接”、“关闭”)) 返回[JPEG数据] 例外情况除外,如e: 返回['Oops', “无法读取服务器上的文件!”]
--AFAICS WSGI应用程序必须返回包含字符串的iterable;图像是字节对象,但服务器运行的是Python 2.7,&“bytes”是“string”的别名,所以这不应该是个问题。在这种情况下,我找不到任何有关编码的信息&HTTP处理八位字节。我尝试了各种各样的变体&用谷歌搜索了几天,但仍然卡住了。我怎样才能让这个愚蠢的东西为一个形象服务呢?

这一定足够了

def application(environ, start_response):
    data = open('image.jpg', 'rb').read()
    start_response('200 OK', [('content-type': 'image/jpeg'), 
                              ('content-length', str(len(data)))])
    return [data]

也许错误不是你想的那样。检查Apache的日志文件中是否有错误-/var/log/apache2/error.log(如果您使用的是Apache)

好的,这是一个单独的问题:Python编译器在测试中遇到了“or”问题。我通过使用'env[“PATH_INFO”].lower()修复了这个问题

感谢您的回复, Ed

这可能会帮助您:
def application(environ, start_response):
    data = open('image.jpg', 'rb').read()
    start_response('200 OK', [('content-type': 'image/jpeg'), 
                              ('content-length', str(len(data)))])
    return [data]