1
<?php
//设置数据格式-- json
header('content-type:application/json;charset=utf-8');
// *代表允许任何网址请求
header('Access-Control-Allow-Origin:*');
// 允许请求的类型
header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE');
// 设置允许任何请求头的字段
header('Access-Control-Allow-Headers:*');
//屏蔽参数为空警告  
error_reporting(0);


$url = isset($_POST['url']) ? $_POST['url'] : ''; //图片下载url

if ($url == '') {
    $res = array('code' => '0', 'msg' => '参数错误');
    exit(json_encode($res));
} else {
    getImage($url, $save_dir = '../assets/img', $filename = '', $type = 0);
}

/*
    *功能:php完美实现下载远程图片保存到本地
    *参数:文件url,保存文件目录,保存文件名称,使用的下载方式
    *当保存文件名称为空时则使用远程文件原来的名称
    */
function getImage($url, $save_dir, $filename, $type = 0)
{
    if (trim($save_dir) == '') {
        $save_dir = './';
    }
    if (trim($filename) == '') { //保存文件名
        $ext = strrchr($url, '.');
        if ($ext != '.gif' && $ext != '.jpg' && $ext != '.jpge' && $ext != '.png') {
            $res = array('code' => '0', 'msg' => '格式错误');
            exit(json_encode($res));
        }
        $filename = time() . $ext;
    }
    if (0 !== strrpos($save_dir, '/')) {
        $save_dir .= '/';
    }
    //创建保存目录
    if (!file_exists($save_dir) && !mkdir($save_dir, 0777, true)) {
        $res = array('code' => '0', 'msg' => '目录权限错误');
        exit(json_encode($res));
    }
    //获取远程文件所采用的方法
    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_dir . $filename, 'a');
    fwrite($fp2, $img);
    fclose($fp2);
    unset($img, $url);
    $res = array('link' =>  'http://localhost/api/assets/img/' . $filename);
    exit(json_encode($res));
}

amao
34 声望3 粉丝

不学无术的大三狗一只