class DownloadImage
{
/*
*功能:php完美实现下载远程图片保存到本地
*参数:文件url,保存文件目录,保存文件名称,使用的下载方式
*当保存文件名称为空时则使用远程文件原来的名称
*/
public static function getImage($url, $save_dir = '', $filename = '', $type = 0)
{
if (trim($url) == '')
{
return ['file_name' => '', 'save_path' => '', 'error' => 1, 'error_message' => 'url不能为空'];
}
$save_absolute_dir = ROOT_PATH . "/" . $save_dir;
if (trim($filename) == '')
{//保存文件名
$ext = strrchr($url, '.');
if ($ext != '.gif' && $ext != '.GIF' && $ext != '.jpg' && $ext != '.JPG' && $ext != '.jpeg' && $ext != '.JPEG' && $ext != '.png' && $ext != '.PNG')
{
return ['file_name' => '', 'save_path' => '', 'error' => 3, 'error_message' => '图片格式不正确'];
}
$filename = time() . $ext;
}
$last = strlen($save_absolute_dir) - 1;
if ($save_absolute_dir[$last] !== "/")
{
$save_absolute_dir .= '/';
}
//创建保存目录
if (!file_exists($save_absolute_dir) && !mkdir($save_absolute_dir, 0777, true))
{
return ['file_name' => '', 'save_path' => '', 'error' => 5, 'error_message' => '创建目录失败'];
}
//获取远程文件所采用的方法
if ($type)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$img = curl_exec($ch);
curl_close($ch);
}
else
{
ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
}
//$size=strlen($img);
//文件大小
$fp2 = @fopen($save_absolute_dir . $filename, 'a');
fwrite($fp2, $img);
fclose($fp2);
unset($img, $url);
return ['file_name' => $filename, 'save_path' => $save_dir . '/' . $filename, 'error' => 0, 'error_message' => ''];
}
}
php完美实现下载远程图片保存到本地
最新推荐文章于 2024-06-13 15:01:36 发布