Как загрузить / показать картинку на странице Python CGI - PullRequest
0 голосов
/ 27 мая 2011

Я написал небольшой опрос с использованием Python и CGI. Я пытаюсь показать изображение с помощью обычного тега <img>, но даже если изображение находится в том же каталоге, что и мой скрипт cgi, мой скрипт не может его показать. Я также изменил заголовок на это:

print "Content-type: text/html; image/jpeg"
print
print """<html> 
<head>
<title>You are going to be redirected</title> 
</head> 
<body bgcolor = #14b585>
<br>
 <p align=center><font>Helloooo</font></p>
 <img src="cat.jpeg" alt="cat" width="304" height="228"/> 
 <form action="./sample.py" method="post">
<p align=center><input type="submit" value="YES!" /></p>
 </form>
 </body>
 </html>

"" "

Почему? (Это очень маленький файл JPG)

Ответы [ 2 ]

2 голосов
/ 27 мая 2011
print "Content-type: text/html; image/jpeg"

Не меняйте заголовок на это. У вас не может быть нескольких типов контента для одного документа (исключая многокомпонентные документы, но браузеры их не поддерживают, и это неправильный формат).

Вы доставляете документ HTML со ссылкой на изображение в нем. На изображение будет отдельный запрос и ответ.

print "Content-type: text/html"

Или лучше:

print "Content-type: text/html; charset=utf-8"

(Предполагается, что вы используете utf-8, которым вы и должны быть).

print """<html> 

Ваш Doctype отсутствует. Это вызовет режим причуд, который нежелателен. У вас также есть много унаследованных презентационных разметок, которые должны быть заменены CSS.

<img src="cat.jpeg" alt="cat" width="304" height="228"/> 

Контекст предполагает, что изображение является декоративным, поэтому альтернативный текст, вероятно, должен быть "" (см. Альтернативные тексты в IMGS ), но в действительной ссылке на изображение нет ничего плохого.

Но даже если картинка находится в том же каталоге, что и мой скрипт cgi

Так как HTML вроде бы в порядке. Вы должны проверить, что изображение.

Можете ли вы добраться до изображения, введя URL-адрес напрямую?

Что говорят логи веб-сервера при попытке?

Возможно, ваш сервер настроен так, чтобы пытаться обрабатывать все в каталоге как исполняемый файл, независимо от его расширения, поэтому он может пытаться запустить образ, как если бы это была программа CGI (которая, очевидно, будет потерпеть поражение). Если это так, то вы можете переместить изображение или изменить конфигурацию сервера.

И я только что заметил этот комментарий:

Я сделал это в своем браузере: localhost / cgi-bin / cat.jpg, и он получил ошибку, я проверил логи, это ошибка формата Exec: exec из '/ home / hossein / public_html / cgi-bin / cat .jpg 'не удалось

Вот что происходит. Перемещение изображения - самое простое решение.

1 голос
/ 27 мая 2011

ваш apache был настроен на использование каталога cgi-bin в качестве папки сценариев CGI, поэтому любой запрос, пытающийся получить файл из этой папки apache, пытается выполнить его как сценарий CGI.чтобы сделать изображение видимым, переместите его в папку www / html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...