远程下载图片

需求: 数据库表中存储的图片是远程地址服务器上的图片,现在要全部下下来本地保存,保存图片名字要匹配节目名字(中文字符)?


采用办法: 

$sql = "SELECT name,logo from program";
$rs = mysql_query($sql);
while ($program = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    $imagesURL = $program['logo'];
 
   $newImg = $program['name'].".jpg";
   $newImg = iconv("UTF-8","GB2312//IGNORE",$newImg) ;
   
   file_put_contents("../audioImg/". $newImg , file_get_contents($imagesURL));

}

exit;

出现的问题: 保存的文件名字都是乱码,处理办法,对我们拼接的utf8的$newImg文件名进行转码至GB2312,这样就搞定了。


拓展知识分享:

对于远程文件访问,考虑使用PHP提供的cURL功能。

用curl远程读取的方法:
第一,allow_url_fopen=ON的情况下:
$str = file_get_contents("http://www.csdn.net/");
if ($str !== false) {
// do something with the content
echo $str;
}
?>

第二,allow_url_fopen = Off的情况下:
$ch = curl_init("http://www.csdn.net/");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$str = curl_exec($ch);
if ($str !== false) {
// do something with the content
echo $str;
}
curl_close($ch);
?>


补充:

<?php 
// 
// Function: 获取远程图片并把它保存到本地 
// 
// 
// 确定您有把文件写入本地服务器的权限 
// 
// 
// 变量说明: 
// $url 是远程图片的完整URL地址,不能为空。 
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期 
// 自动生成. 
function GrabImage($url,$filename="") { 
if($url==""):return false;endif; 
if($filename=="") { 
$ext=strrchr($url,"."); 
if($ext!=".gif" && $ext!=".jpg"):return false;endif; 
$filename=date("dMYHis").$ext; 
} 
ob_start(); 
readfile($url); 
$img = ob_get_contents(); 
ob_end_clean(); 
$size = strlen($img); 
$fp2=@fopen($filename, "a"); 
fwrite($fp2,$img); 
fclose($fp2); 
return $filename; 
} 
$img=GrabImage("http://www.php100.com/images/_1978837_detector_ap100.jpg",""); 
if($img):echo '<pre><img src="'.$img.'"></pre>'; 
else:echo "false"; 
endif; 
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值