#html #perl #cgi
#HTML #perl #cgi
Вопрос:
Я создаю очень простую HTML-форму. Я включил форму в файл CGI. Я использую perl-скриптинг. Я попытался включить изображение в свою форму, используя следующий CGI-скрипт:
print "<img src=picture1.jpg style=width:600px;height:300px;>";
Проблема в том, что изображение в форме не отображается, но я не получаю никаких ошибок, и все остальное работает нормально, когда я получаю доступ к форме из браузера.
Комментарии:
1. Пожалуйста, имейте в виду, что HTML не содержит картинки, только ссылку на картинку. Браузер разрешает ссылку на URL-адрес и извлекает его, чтобы получить изображение. Поэтому вам также необходимо убедиться, что браузер при получении этого URL-адреса действительно получает картинку.
Ответ №1:
Глядя на ваш скриншот, я бы предположил, что источник изображения или местоположение, указанные как src='picture1.jpg'
, неверны.
Возможными причинами могут быть:
- файл
picture1.jpg
не существует на вашем сервере - файл
picture1.jpg
находится в другом каталоге
Держу пари, это вторая проблема. Ваш CGI-скрипт, скорее всего, находится в каталоге с именем like cgi-bin
, поэтому, используя src='picture1.jpg'
его, вы ищете картинку в этом cgi-bin
каталоге.
Вы действительно уверены, что ваша фотография находится здесь: cgi-bin/picture1.jpg
? Скорее всего, нет.
Я предполагаю, что картинка находится где-то в другом месте, а это значит, что вы должны задать для нее правильный путь, как показано в примерах ниже:
img src='../picture1.jpg'
Это означает «Перейдите на один уровень каталога выше и найдите picture1.jpg
«.
img src='../images/picture1.jpg'
Это означает: «Перейдите на один уровень каталога выше и найдите picture1.jpg
внутри image
каталога».
img src='/html/images/picture1.jpg'
Это означает: «Перейдите в корневой каталог вашего веб-сайта, найдите html
каталог, затем найдите image
каталог и, наконец picture1.jpg
, внутри.
После того как вы скорректировали путь в соответствии со структурой каталогов вашего сервера, изображение должно отображаться по желанию. Кроме того, как упоминалось в других ответах, вы всегда должны правильно форматировать свои HTML-атрибуты.
Ответ №2:
Убедитесь, что вы используете правильный формат для атрибутов
print "<img src='picture1.jpg' style='width:600px;height:300px;'>";
Комментарии:
1. Спасибо за ответ, но я все равно вижу тот же результат. Я отредактировал свой вопрос и приложил скриншот того, что я вижу.
Ответ №3:
Вам нужно использовать двойные кавычки в html.
print q{<img src="picture1.jpg" width="600" height="300">};
Ответ №4:
картинка в форме не отображается, но я не получаю никаких ошибок
Вы не получаете никаких ошибок в браузере, но проверяли ли вы журнал ошибок веб-сервера?
Вы не говорите, где ваша CGI-программа и ваше изображение фактически хранятся на вашем веб-сервере, поэтому трудно быть уверенным, в чем проблема, но я ожидаю, что вы получаете ошибку в журнале веб-сервера, которая прояснит ситуацию.
Если бы мне пришлось угадывать (я этого не делаю, но я все равно собираюсь!) Я бы сказал, что проблема заключается в расположении изображения. Распространенный способ настройки CGI-программ на веб-сервере — назначить определенный каталог (часто называемый cgi-bin
) в качестве местоположения для хранения всех ваших CGI-программ. Но на самом деле это означает, что вы говорите своему веб-серверу: «Все в этом каталоге является программой CGI — каждый раз, когда вы получаете запрос на ресурс в этом каталоге, вам нужно выполнить программу и вернуть результаты в браузер».
Таким образом, веб-сервер считает, что все в этом каталоге является программой CGI. Это означает, что вы не можете поместить файлы изображений в этот каталог. Потому что, если веб-сервер получит запрос /cgi-bin/picture1.jpg
, он подумает, что picture
.jpg — это программа, которая возвращает изображение, поэтому он попытается выполнить файл изображения. И это не сработает, и вы получите ошибку 500 в своем журнале ошибок.
Код, который вы нам показали, таков:
print "<img src=picture1.jpg style=width:600px;height:300px;>";
Поскольку у вас есть src=picture1.jpg
, веб-сервер предполагает, что файл изображения находится в текущем каталоге, который будет каталогом, содержащим программу CGI. Так что есть большая вероятность, что это проблема, которую я описал выше.
Другой вариант заключается в том, что вы настроили свой веб-сервер так, чтобы все, что имеет определенное расширение (часто .cgi
), рассматривалось как программа CGI. Если это так, то мое предыдущее объяснение не объяснит вашу проблему. В этом случае, скорее всего, вы просто неправильно указали URL-адрес файла изображения, и вы получите ошибку 404 в журнале ошибок веб-сервера.
Но в обоих случаях почти наверняка в журнале ошибок веб-сервера вас будет ждать больше полезной информации. Пожалуйста, посмотрите там и добавьте детали к вашему вопросу.