小女子想请教大家一个问题,我想从http://open.thumbshots.org/这获取的网站缩略图下载到我空间上,这个该怎么实现呢?这个是现在存在问题的代码:function save_to_local($weburl, $savepath = '') {

$succeed = false;

set_time_limit(0);
if (substr($savepath, -1) != '/') $savepath .= '/';
if (!is_dir($savepath)) @mkdir($savepath, 0777);

$imgurl = 'http://open.thumbshots.org/image.pxf?url='.$weburl;
$newpath = $savepath.$weburl.'.jpg';
$data = get_url_content($imgurl);
if (strlen($data) != 1984) {
if ($data) {
$fp = @fopen($newpath, "w");
        @fwrite($fp, $data);
        @fclose($fp);

$succeed = true;
}
}

if ($succeed) {
return $newpath;
} else {
return $succeed;
}
}php.ini里开启了curl功能,文件权限也给了,就是不能下载,都快郁闷死了

解决方案 »

  1.   

    strlen($data) != 1984
    估计是这一分支出了意外。我尝试传递一些参数给http://open.thumbshots.org/
    如果参数不是一个可以访问到网址,就会出现这种问题,你不如 var_dump($weburl) 看看
      

  2.   

    <?php
    function save_to_local($weburl, $savepath = '', $proxy = '', $port = 8000) {    $succeed = false;    set_time_limit(0);
        if (substr($savepath, -1) != '/') $savepath .= '/';
        if (!is_dir($savepath)) @mkdir($savepath, 0777);    if (empty($proxy)) {
            $fp = fsockopen('open.thumbshots.org', 80, $err, $errno, 3);
        } else {
            $fp = fsockopen($proxy, $port, $err, $errno, 3);
        }
        if (!$fp) {
            echo "Connection failed. $err($errno)";
            return false;
        }
        if (!empty($proxy)) {
            fputs($fp, 'GET http://open.thumbshots.org/image.pxf?url=' . urlencode($weburl) . " HTTP/1.0\r\n");
        } else {
            fputs($fp, 'GET /image.pxf?url=' . urlencode($weburl) . " HTTP/1.0\r\n");
        }
        fputs($fp, "Host: open.thumbshots.org\r\n\r\n");
        $data = '';
        while (!feof($fp)) {
            $data .= fread($fp, 1024);
        }
        $data = preg_replace('/^.+(\\r\\n){2}/s', '', $data);
        $newpath = $savepath.urlencode($weburl).'.jpg';
        if (!empty($data)) {
            $fp = @fopen($newpath, "w");
            @fwrite($fp, $data);
            @fclose($fp);
            $succeed = true;
        }
        if ($succeed) {
            return $newpath;
        } else {
            return $succeed;
        }
    }
    echo save_to_local('www.baidu.com', './');
    ?>
      

  3.   

    $newpath = $savepath.$weburl.'.jpg';
    你这里的文件名问题吧,如果有http://就会带有 ”/“这种字符 貌似是不行的···