Как я могу отправить несколько изображений в серверной программе Perl CGI? - PullRequest
0 голосов
/ 20 мая 2010

Я новичок в Perl CGI и т. Д. Я экспериментировал с концепцией push-сервера с куском кода Perl. Предполагается, что изображение в формате JPEG отправляется клиенту каждые три секунды.

К сожалению, ничего не работает. Может кто-нибудь помочь определить проблему?

Вот код:

use strict;
# turn off io buffering
$|=1;
print "Content-type: multipart/x-mixed-replace;";
print "boundary=magicalboundarystring\n\n";
print "--magicalboundarystring\n";

#list the jpg images
my(@file_list) = glob "*.jpg";
my($file) = "";

foreach $file(@file_list ) 
{
     open FILE,">", $file or die "Cannot open file $file: $!";
     print "Content-type: image/jpeg\n\n";

    while ( <FILE> )
    { 
        print "$_";
    }

    close FILE;
     print "\n--magicalboundarystring\n";
     sleep 3;
    next;

}

РЕДАКТИРОВАТЬ: добавлено отключение буферизации ввода / вывода, добавлены «использовать строгий» и «@file_list», «$ file» сделаны локальными

1 Ответ

1 голос
/ 20 мая 2010

Очистить выход.

Скорее всего, сервер хранит ответ в буфере. Возможно, вы захотите сделать fflush(STDOUT) после каждого print или autoflush STDOUT один раз.

Посмотрите на http://www.abiglime.com/webmaster/articles/cgi/032498.htm

[цитата]

Чтобы использовать скрипт ниже, вам понадобится реализовать так называемый "непарсированный" CGI на вашем сайте. Обычно веб сервер будет буферизовать весь вывод из ваша программа CGI, пока она не программа отделки. Мы не хотим, чтобы это произошло Вот. С Apache это довольно просто. Если название вашей CGI-программы начинается с "nph-" оно не будет проанализировано. Также, измените глобус "/ some / path / *" на путь, по которому вы хотите искать файлы.

[/ цитата]

...