远程下载图片
2013-07-26 10:14
106 查看
需求: 数据库表中存储的图片是远程地址服务器上的图片,现在要全部下下来本地保存,保存图片名字要匹配节目名字(中文字符)?
采用办法:
出现的问题: 保存的文件名字都是乱码,处理办法,对我们拼接的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;
?>
采用办法:
$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;
?>
相关文章推荐
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- php将远程图片下载保存到本地
- php中通过正则表达式下载内容中的远程图片的函数代码
- 下载远程图片
- php程序获取远程图片进行下载到本地方法的总结
- php完美实现下载远程图片保存到本地
- php通过curl下载远程图片实例
- Android多线程下载远程图片
- ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
- C#替换下载远程图片
- 献给学习XMLHTTP的朋友(自动将远程页面的文件中的图片下载到本地)
- Android多线程下载远程图片【转】
- php下载远程图片到本地
- Android多线程下载远程图片【转】
- js 将远程图片转化为base64及下载远程图片
- php下载远程图片函数 可伪造来路 .
- 自动将远程页面的文件中的图片下载到本地服务器
- python多线程批量下载远程图片
- PHP下载远程图片的3个方法