2014-01-26 4 views
1

Я использовал модуль LLP perl для извлечения изображения из URL-адреса.Изображение, полученное от Perl LWP, не отображается в Firefox или Chrome

CGI FILE (скажем img.cgi)

my $ua = LWP::UserAgent->new(timeout => $timeout); 
my $respons = $ua->request(POST $url, Authorization => $auth_header); 
if ($respons->is_success) { 
    $ImgContent = $respons->decoded_content; 
} 
print $ImgContent; 

Тогда я звоню выше CGI как запрос HTTP, используя холодный синтез:

img_display.cfm файл

<cf_http method="POST" url="img.cgi" timeout="60" throwonerror="no" local="yes"> 
.... 
</cf_http> 
<cfoutput> 
    #cfhttp.filecontent# 
</cfoutput> 

Всякий раз, когда я нажимаю URL ......./img_display.cfm, из браузера браузера Internet Explorer браузер ys изображение отлично.

Однако всякий раз, когда я удаляю один и тот же URL из Chrome или FireFox, вместо изображения, отображения браузера, некоторые странные символы (эквивалент изображения, открываемого в блокноте).

ÿØÿàJFIFSÿþ4Created using the Colosseum Builders JPEG libraryÿÀ&ŠÿÛ„ " " ÿÄ{ !"t³Ô#1468UWv–²´Ó27AQVu”•$5BXfs“¦Ñ%3DRTb‘±aµ&qr†—¡Ò CGw‚„ÃÿÚ?úF4cM®ž¦Ý=sÓÜJléXÕ½é±F'p£6¤dJ‘*ªªª÷ª­oÁ:Yói†}^‹øtö ÒÏ›L3êô_ç°N–|ÚaŸW¢þ=‚t³æÓú½ðé쥟6˜gÕ过O`,ù´Ã>¯Eü:{égͦõz/áÓØ'K>m0Ï«ÑžÁ:Yói†}^‹øtö 

Я понятия не имею, почему IE отображает изображение, в то время как хром и Firefox отображает код изображения.

Любая помощь приветствуется.

+0

Изменение последняя строка в CGI для 'печати CGI :: заголовок ("изображение/JPEG") $ ImgContent;' –

ответ

3

То, что вы видите, представляет собой строковое представление данных двоичного изображения. Браузер отображает это, потому что он не знает, что это образ.

Вам необходимо напечатать MIME-type изображения в HTTP header и установить выходные данные на binmode. .

my $q = CGI->new; 
print $q->header('image/jpeg'); 
binmode STDOUT; 
print $ImgContent; 
+0

Правильный тип мим является: 'изображение/jpeg' не' IMG/... '! –

+0

Действительно. Благодарю. – simbabque

 Смежные вопросы

  • Нет связанных вопросов^_^