pwa.js的国外主机使用方案

Posted on 星期六, 十二月 5th, 2009 at 22:11
常见嵌入博客Picasa相册的方法就是使用pwa.js,pwa.js非常好用,可以完美嵌入到博客程序里面去。但是当Picasa被无法访问后,这个脚本就没有用武之地了。
因为pwa没有下载远程的图片。只是连接到了Google服务器上。
现在我已经使用了外国主机,是不是可以把图片下载主机上,然后变成本地文件。这样就变成普通文件,应该就没有问题了。
于是改写了pwa.js,改连至本地主机。
服务器端程序如下:
 
<?php
function curl_download($remote, $local) {
     $cp = curl_init($remote);
     $fp = fopen($local, “w”);
   
    curl_setopt($cp, CURLOPT_FILE, $fp);
    curl_setopt($cp, CURLOPT_HEADER, 0);
   
     curl_exec($cp);
     curl_close($cp);
     fclose($fp);   
}

$REFERER=$_SERVER['HTTP_REFERER'];//这里可以利用REFERER防止盗链
 //本地保存图片的路径
$CacheDir=”cache/”;
$imgsrc = urldecode( htmlspecialchars(  $_GET['src']  ) );
//由于墙对ggpht特别敏感,过滤之。
$imgsrc=str_replace(”-018D6A6D-7F92-456e-A0B0-0299ED6A1130-”,”ggpht”,$imgsrc);
//以下过滤一些不能在url中出现的字符。
$imgsrc=str_replace(”-D89C23BA-AECD-44c4-BA2B-6D1ABC15B6E8-”,”:”,$imgsrc);
$imgsrc=str_replace(”-98B824C9-789C-42b0-8120-AB521E31F289-”,”/”,$imgsrc);
$imgsrc=str_replace(”-51E3C888-EF45-42cf-8D78-1595857BF2C5-”,”.”,$imgsrc);
$imgsrc=str_replace(”-907415C9-A075-40e7-821B-892CEF56E609-”,”?”,$imgsrc);
$imgsrc=str_replace(”-CE73AD1A-160F-4522-A5F7-B61A32DDFFB1-”,”&”,$imgsrc);
 
if(   substr_count( strtolower($imgsrc), ‘jpg’) > 0 ){
 $append = “jpg”;
}else if(   substr_count( strtolower($imgsrc), ‘gif’) > 0 ){
 $append = “gif”;
}else{
 $append = “png”;
}
$cache_image = md5( $imgsrc ).”.”.$append ;
 
$cache_file = $CacheDir. $cache_image;
header(”Content-type: image/”.$append );
 
if(  file_exists($cache_file) && filesize($cache_file) > 10 ){
  readfile($cache_file );
}else{
  curl_download($imgsrc,$cache_file);
  readfile($cache_file );
}
?>

 
以下为pwa.js的修改要点:
 
 增加函数:
 function UrlEncode(S)
 {
  var tmpstr=S;
  //alert(S);
   tmpstr = tmpstr.replace(/ggpht/g,”-018D6A6D-7F92-456e-A0B0-0299ED6A1130-”);
   tmpstr = tmpstr.replace(/:/g,”-D89C23BA-AECD-44c4-BA2B-6D1ABC15B6E8-”);
   tmpstr = tmpstr.replace(/\//g,”-98B824C9-789C-42b0-8120-AB521E31F289-”);
   tmpstr = tmpstr.replace(/\./g,”-51E3C888-EF45-42cf-8D78-1595857BF2C5-”);
   tmpstr = tmpstr.replace(/\?/g,”-907415C9-A075-40e7-821B-892CEF56E609-”);
   tmpstr = tmpstr.replace(/\&/g,”-CE73AD1A-160F-4522-A5F7-B61A32DDFFB1-”);
      tmpstr =”picasa代理程序地址/?src=”+tmpstr; 
  return tmpstr
 }
然后把所有的img 的src全部换成UrlEncode(原来的src)
对了,最重要的一点!别忘了要有国外主机哦
You can leave a response, or trackback from your own site.

Leave a Reply