Мой сервер предоставляет скрипт wsgi.py для встраивания приложения Python.Мне нужно заполнить функцию приложения (environment, start_response) для ответа на HTTP-запросы.Я мог бы управлять запросами GET и POST (как показано в коде ниже).Но в html-коде, который я возвращаю для запроса GET, у меня есть <img src='images/mypicture.png' />
, и изображение НЕ отображается в первом раунде.
Я использовал Bottle для локального разработчика, и это было сделано с помощью конкретного ответадля запросов данных изображений.Но на внешнем сервере (Apache, Python 3.7) у меня нет доступа к Bottle, и мне нужно написать простой код wsgi.Как я могу обнаружить запрос на изображение, чтобы я мог вернуть правильный заголовок и данные?Я могу управлять запросами GET и POST, но не могу определить, когда требуется изображение.
def my_get_post_form(environ):
# Simple way to retrieve the POST form data (works fine on my server)
input = environ['wsgi.input']
nSize = int(environ['CONTENT_LENGTH'])
sBuf = input.read(nSize)
return(sBuf)
def application(environ, start_response):
sMethod = environ['REQUEST_METHOD']
sParam = environ['QUERY_STRING'].split("&")
sPath = environ['PATH_INFO']
sFull = environ['SCRIPT_NAME']
# It does NOT detect an image request...
if '.png' in sFull:
data = open(sFull, 'rb').read()
start_response('200 OK', [('Content-Type', 'image/png'),
('content-length', str(len(data)))])
return(data)
# This works : I return html code with <img /> tags inside
# This html code includes a form
if sMethod.upper() == "GET":
start_response('200 OK',[('Content-Type','text/html; charset=utf-8')])
return ['<!DOCTYPE html><html><meta charset="utf-8">',
sHtmlD.encode('utf-8'),
sFormExterne.encode('utf-8'),
sHtmlF.encode('utf-8')]
# This works too, to retrieve the form data, make some computations
# and return the result in an html page
if sMethod.upper() == "POST":
sParam = str(my_get_post_form(environ)).split("&")
... some computations ...
start_response('200 OK',[('Content-Type','text/html; charset=utf-8')])
return ['<!DOCTYPE html><html><meta charset="utf-8">'.encode('utf-8'),
sHtmlD.encode('utf-8'),
sStats.encode('utf-8'),
sHtmlF.encode('utf-8')]
Я ожидал получить имя изображения где-то в среде ... Так что я могу вернутьсоответствующий ответ (данные изображения и правильные заголовки).Похоже, PATH_INFO
и SCRIPT_NAME
не возвращают имя файла изображения. Есть идеи для этого?