Иконка Image Proxy в Perl - PullRequest
       19

Иконка Image Proxy в Perl

0 голосов
/ 20 августа 2010

Я пытаюсь найти правильный способ предоставления файлов значков для списков нашего сайта. По сути, значок для списка может быть получен из файла изображения из нескольких различных служб (Flickr, Picasa, Google Static Maps, нашей собственной внутренней службы размещения изображений и т. Д.). URL-адрес значка хранится в нашей базе данных, поэтому я бы хотел, чтобы каждый значок списка отображался простым вызовом:

http://www.example.com/listing/1234/icon

В настоящее время я использую CGI.pm для перенаправления на правильный URL-адрес значка, однако я хочу, чтобы файл отображался напрямую без необходимости перенаправления 301. Вот код для того, что мы использовали:

my $url = "http://www.example-service.com/image-123.gif";
print $query->redirect(-url=>$url);

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

1 Ответ

2 голосов
/ 20 августа 2010

Используйте LWP , чтобы получить удаленный файл и распечатать его.

#!/usr/local/bin/perl
use LWP::UserAgent;
use CGI;
my $q = CGI->new;
my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1");
my $url = 'http://www.example-service.com/image-123.gif';

# Create a request
my $req = HTTP::Request->new(GET => $url);

my $res = $ua->request($req);

if ($res->is_success) {
        print $q->header( $res->content_type );
        print $res->content;
} else {
        print $q->header( 'text/plain', $res->status_line );
        print $res->status_line, "\n";
}

Кроме того, вы можете написать триггер для вашей базы данных, который загружает изображение для списка и сохраняет егогде-нибудь в webroot или в самой базе данных при добавлении нового списка.

...