Как поместить картинку в HTML с помощью CGI Perl?

#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 в журнале ошибок веб-сервера.

Но в обоих случаях почти наверняка в журнале ошибок веб-сервера вас будет ждать больше полезной информации. Пожалуйста, посмотрите там и добавьте детали к вашему вопросу.