72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383

Отображение картинки на странице после отправка файла на сервер CGI

20.11.2020, 07:53. Показов 5172. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, необходимо по заданию с помощью CGI загрузить файл на сервер. Делаю это так. Файл загружается, но по заданию ещё нужно отобразить на новой странице загруженную картинку. Как это можно сделать? Пытаюсь сделать это несколько дней, не выходит.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Задание №2</title>
</head>
<body>
 
    <form action="/cgi-bin/form2.py" method="POST" enctype="multipart/form-data">
        <p>Выберите файл: <input required type="file" name="filename" /></p>
        <p><input type="submit" value="Загрузить" /></p>
    </form>
    
</body>
</html>
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import cgi, os
import cgitb; cgitb.enable() 
form = cgi.FieldStorage() 
# Get filename here. 
fileitem = form['filename'] 
# Test if the file was uploaded 
if fileitem.filename: 
    # strip leading path from file name to avoid 
    # directory traversal attacks 
    fn = os.path.basename(fileitem.filename) 
    open(fn, 'wb')
    f.write(fileitem.file.read()) 
    message = 'The file "' + fn + '" was uploaded successfully' 
else: 
    message = 'No file was uploaded' 
 
print("Content-type: text/html\n")
print("""<!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="cp1251">
        <title>Загрузка файла</title>
    </head>
    <body>
        <p>%s</p>
    </body>
    </html>    
     """ % (message,))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2020, 07:53
Ответы с готовыми решениями:

Отправка файла на сервер CGI
Добрый день, необходимо по заданию с помощью CGI загрузить файл на сервер. Делаю это так. Файл загружается, но по заданию ещё нужно...

Загрузка картинки на сервер по ссылке, отправка, удаление картинки
Какие есть методы, чтобы: а) Загрузить на сервер в папку ../temp картинку по ссылке (например,...

Отправка файла на сервер сразу после его выбора в input file
Добрый день уважаемые программисты , есть инпут, как мне отправить картинку после открытия его в &lt;input type=&quot;file&quot;...

14
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 08:28
Разве это решается с помощью Python? Может JS?
Или сразу в шаблон добавить img. Вам же известно название и расположение загруженного файла=> src можно сформировать.
0
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 12:09  [ТС]
ioprst, Можно как-то так сделать. Картинка загружается на сервер, выводится соответствующее сообщение. Но картинка не отображается. Путь к файлу может не так указываю...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import cgi, os
import cgitb; cgitb.enable() 
 
form = cgi.FieldStorage() 
fileitem = form['filename'] 
if fileitem.filename: 
    fn = os.path.basename(fileitem.filename) 
    f = open(fn, 'wb')
    f.write(fileitem.file.read()) 
    message = 'Файл "' + fn + '" был успешно загружен' 
else: 
    message = 'Файл не загружен' 
 
print("Content-type: text/html\n")
print("""<!DOCTYPE HTML>
    <html>
    <head>
        <meta charset="cp1251">
        <title>Загрузка файла</title>
    </head>
    <body>""")
print("<p>{}</p>".format(message))
print("<img src="C:\Users\Egor\AppData\Local\Programs\Python\Python39\название картинки.png" alt="">")
 
print("""</body>
        </html>""")
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 12:22
читайте про разные кавычки и экранирование символов
попробуйте так
Python
1
print(r'<img src="C:\Users\Egor\AppData\Local\Programs\Python\Python39азваниекартинки.png" alt="">')
1
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:15  [ТС]
Так ничего не отобразилось. А вот так
Python
1
print("<img src=\"filename.jpg\" >")
стал появляться символ картинки, т.е. тег читается, но файла как будто нет.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 13:19
eganator, вы в корректности пути уверены? У вас html файлы лежат рядом с загруженным изображением?

Добавлено через 1 минуту
И почему вы пишите filename.jpg. Ведь ваше изображение имеет имя os.path.basename(fileitem.filename) (что там за имя, только вам известно)
0
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:22  [ТС]
ioprst, html файл лежит в одной папке с загруженным изображением.

Добавлено через 2 минуты
Цитата Сообщение от ioprst Посмотреть сообщение
что там за имя, только вам известно
например такой файл "123456.png". Даже прописывая такое имя самого изображения, оно не отображается. Только символ не загруженной картинки
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 13:24
имя файла корректно?

Добавлено через 1 минуту
Цитата Сообщение от eganator Посмотреть сообщение
например такой файл "123456.png"
так почему вы пишите
Цитата Сообщение от eganator Посмотреть сообщение
print("<img src="filename.jpg" >")
???
Пишите так
Python
1
print("<img src=\"{}\" >".format(fn))
1
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:24  [ТС]
Цитата Сообщение от ioprst Посмотреть сообщение
имя файла корректно?
да, корректно
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 13:27
Цитата Сообщение от eganator Посмотреть сообщение
Даже прописывая такое имя самого изображения, оно не отображается. Только символ не загруженной картинки
не заметил

Добавлено через 2 минуты
попробуйте указать абсолютный путь к загруженному файлу
0
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:28  [ТС]
Цитата Сообщение от ioprst Посмотреть сообщение
print("<img src="{}" >".format(fn))
Результат тот же. Тег img виден, а результата в нём (изображение) почему-то нет.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 13:32
А что вы получаете в дебагере браузерном? Хром: F12 -> Network
0
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:37  [ТС]
ioprst, Failed to load resource: the server responded with a status of 404 (No such CGI script ('/cgi-bin/123456.png'))

Добавлено через 1 минуту
GET http://localhost:8000/cgi-bin/123456.png 404 (No such CGI script ('/cgi-bin/123456.png'))

Добавлено через 1 минуту
Если в папку cgi-bin вставляю картинку, то ошибка пропадает. Но она так и не отображается
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
20.11.2020, 13:43
Лучший ответ Сообщение было отмечено eganator как решение

Решение

Python
1
print("<img src=\"http://localhost:8000/{}\" >".format(fn))
1
72 / 52 / 8
Регистрация: 13.11.2017
Сообщений: 383
20.11.2020, 13:44  [ТС]
ioprst, Спасибо Вам большое, получилось! Теперь точно запомню, как это делать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2020, 13:44
Помогаю со студенческими работами здесь

Отображение загруженной картинки на новой странице
Добрый день, необходимо по заданию с помощью CGI на языке Python загрузить файл на сервер. Делаю это так. Файл загружается, но по заданию...

Perl + SSI = ошибка invalid CGI ref 'http://сервер/cgi-bin/view_bag.pl' in ....
Вопрос такой: Скрипт view_bag.pl без ошибок выполняется в папке /cgi-bin/, при этом атрибуты файла rwxr-xr-x. Но есть файл bag.shtml,...

отправка картинки на сервер
всем привет! пытаюсь курлом отправить катринку на сервер следующим образом: $img = curl_file_create(dirname(__FILE__).'/image.jpg',...

Загрузка файлов на сервер и отображение их на странице
Доброго дня всем! Пытаюсь реализовать отображение jpg файлов на странице и их загрузку на сервер. Загрузку на сервер выполнил но ни как...

IdHTTP CGI WebServer загрузка файла с ПК пользователя на сервер
Прошу проконсультировать. Есть CGI Web Server по адресу https://193.158.98.65 (не точный) Задача: Клиент, работая с Web Server,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru