2010-08-19 7 views
0

나는 우리 사이트 목록을위한 아이콘 파일을 제공하는 올바른 방법을 찾아 내려고하고있다. 기본적으로 목록의 아이콘은 소수의 다양한 서비스 (Flickr, Picasa, Google Static Maps, 자체 내부 이미지 호스팅 서비스 등)의 이미지 파일에서 가져올 수 있습니다. 나는 각 목록 아이콘을 사용하려는 있도록 아이콘의 URL은 단순히 호출하여 표시 할 우리의 데이터베이스에 저장됩니다아이콘 이미지 프록시 in Perl

현재
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); 

은 내가 사용자를 리디렉션하지 않고 프록시를 통해 파일을 제공하는이 업데이트 수있는 방법에 대한 제안의 코드 예제를 부탁드립니다 : 여기에 우리가 사용하고 무엇에 대한 코드입니다. 도와 주셔서 미리 감사드립니다.

답변

2

원격 파일을 가져 와서 인쇄하려면 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"; 
} 

또는 당신은 어딘가에 또는 데이터베이스 자체에 웹 루트의 하나 목록 저장에 대한 이미지를 다운로드하여 데이터베이스에 대한 트리거를 작성할 수 있습니다.

+0

쉬운 방법이 있습니까? 우리는 이미 1-liner가있는 .htaccess 파일에서 이와 비슷한 작업을 수행하지만 이는 단일 서비스의 프록시 역할을하므로 데이터베이스 쿼리가 올바른 URL을 얻을 필요가 없습니다. Perl에는 단순히 콘텐츠를 다운로드하여 제공해야하는 대신 요청에 대한 프록시로 작동 할 수있는 동일한 기능이 없습니까? –

+1

Russell, 이것은 정확하게 (네트워크) 프록시가하는 것입니다. – daxim

+0

@daxim - Apache RewriteMap을 perl 스크립트와 함께 사용하여 적절한 URL을 반환하면 어떨까요? 그 일이 왜 다른 사람보다 나은 선택일까요? –