$data=file_get_conents($url);
writetofile($address,$data);
function writetofile()
........

解决方案 »

  1.   

    file_get_conents是读取字符串的,不是读二进制数据的,你可以用他读取网上的一个图片试试,失败的
      

  2.   

    下载phpbb,打开admin/admin_users.php文件研究。(本来把代码帖上来的,但太长,帖部分吧)
                            else if( !empty($user_avatar_url) )
                            {
                                    //
                                    // First check what port we should connect
                                    // to, look for a :[xxxx]/ or, if that doesn't
                                    // exist assume port 80 (http)
                                    //
                                    preg_match("/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/", $user_avatar_url, $url_ary);                                if( !empty($url_ary[4]) )
                                    {
                                            $port = (!empty($url_ary[3])) ? $url_ary[3] : 80;                                        $fsock = @fsockopen($url_ary[2], $port, $errno, $errstr);
                                            if( $fsock )
                                            {
                                                    $base_get = "/" . $url_ary[4];                                                //
                                                    // Uses HTTP 1.1, could use HTTP 1.0 ...
                                                    //
                                                    @fputs($fsock, "GET $base_get HTTP/1.1\r\n");
                                                    @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n");
                                                    @fputs($fsock, "Connection: close\r\n\r\n");                                                unset($avatar_data);
                                                    while( !@feof($fsock) )
                                                    {
                                                            $avatar_data .= @fread($fsock, $board_config['avatar_filesize']);
                                                    }
                                                    @fclose($fsock);                                                if( preg_match("/Content-Length\: ([0-9]+)[^\/ ][\s]+/i", $avatar_data, $file_data1) && preg_match("/Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $avatar_data, $file_data2) )
                                                    {
                                                            $file_size = $file_data1[1];
                                                            $file_type = $file_data2[1];                                                        switch( $file_type )
                                                            {
                                                                    case "jpeg":
                                                                    case "pjpeg":
                                                                    case "jpg":
                                                                            $imgtype = '.jpg';
                                                                            break;
                                                                    case "gif":
                                                                            $imgtype = '.gif';
                                                                            break;
                                                                    case "png":
                                                                            $imgtype = '.png';
                                                                            break;
                                                                    default:
                                                                            $error = true;
                                                                            $error_msg = (!empty($error_msg)) ? $error_msg . "<br />" . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
                                                                            break;
                                                            }                                                        if( !$error && $file_size > 0 && $file_size < $board_config['avatar_filesize'] )
                                                            {
                                                                    $avatar_data = substr($avatar_data, strlen($avatar_data) - $file_size, $file_size);                                                                $tmp_filename = tempnam ("/tmp", $this_userdata['user_id'] . "-");
                                                                    $fptr = @fopen($tmp_filename, "wb");
                                                                    $bytes_written = @fwrite($fptr, $avatar_data, $file_size);
                                                                    @fclose($fptr);                                                                if( $bytes_written == $file_size )
                                                                    {
                                                                            list($width, $height) = @getimagesize($tmp_filename);                                                                        if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
                                                                            {
                                                                                    $user_id = $this_userdata['user_id'];                                                                                $avatar_filename = $user_id . $imgtype;。直到
      

  3.   

    file_get_contents
    (PHP 4 >= 4.3.0, PHP 5)file_get_contents -- 将整个文件读入一个字符串
    说明
    string file_get_contents ( string filename [, int use_include_path [, resource context]] )
    和 file() 一样,只除了 file_get_contents() 将文件返回为一个字符串。 file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。 注: 该函数可安全用于二进制对象。提示: 如果“fopen wrappers”已经被激活,则在本函数中可以把 URL 作为文件名来使用。请参阅 fopen() 函数来获取怎样指定文件名的详细信息以及支持 URL 协议的附录 L列表。注: Context 支持是 PHP 5.0.0 新加的。
      

  4.   

    如果是linux系统 可以使用php运行系统命令wget
      

  5.   

    <?
    $s=file_get_contents('http://community.csdn.net/images/CSDN_logo.GIF');
    $fh=fopen('logo.gif','w');
    fwrite($fh,$s);
    fclose($fh);
    ?>
    没问题唉,谁说不能保存二进制的?打PP
      

  6.   

    版本>5
    file_get_contents.
    file_put_contents就行了,
      

  7.   

    // ######### 获取远程文件的大小 #############################################################
    // 范例:remote_image_upload("http://image2.sina.com.cn/sms/sinapic/27115050-index.jpg", "C:/apache/htdocs/1r1.jpg", 300000)
    function remote_filesize($url)
    {
    $urlinfo = parse_url($url);
    if ($urlinfo['scheme'] != 'http')
    {
    return false;
    }
    else if (empty($urlinfo['port']))
    {
    $urlinfo['port'] = 80;
    }
    if ($fp = fsockopen($urlinfo['host'], $urlinfo['port'], $errno, $errstr, 30))
    {
    fwrite($fp, 'HEAD ' . $url . " HTTP/1.1\r\n");
    fwrite($fp, 'HOST: ' . $urlinfo['host'] . "\r\n");
    fwrite($fp, "Connection: close\r\n\r\n");
    while (!feof($fp))
    {
    $headers .= fgets($fp, 4096);
    }
    fclose ($fp);
    $headersarray = explode("\n", $headers);
    foreach($headersarray as $header)
    {
    if (strpos($header, 'Content-Length') === 0)
    {
    $matches = array();
    preg_match('#(\d+)#', $header, $matches);
    return sprintf('%u', $matches[0]);
    }
    }
    return false;
    }
    else
    {
    return false;
    }
    }
    // ########################################################################################// ######### 上传文件(文件来自远程文件) #################################
    function remote_image_upload($url = '', $uploadfile, $maxsize)
    {
    $url = trim($url);
    if ($url AND $url != 'http://www.')
    {
    if ($filesize = remote_filesize($url))
    {
    $filetolarge = false;
    if ($filesize > $maxsize)
    {
    $filetolarge = true;
    }
    else
    {
    @ini_set('user_agent', 'PHP');
    $handle = @fopen($url, 'rb');
    if (!$handle)
    {
    return false;
    }
    while (!feof($handle))
    {
    $contents .= fread($handle, 8192);
    if (strlen($contents) > $maxsize)
    {
    $filetolarge = true;
    break;
    }
    }
    fclose($handle);
    }
    if ($filetolarge OR (strlen($contents) > $maxsize))
    {
    return false;
    }
    }
    else
    {
    return false;
    }
    $filename = tempnam(ini_get('upload_tmp_dir'), 'hzw');
    $fp = @fopen($filename, 'wb');
    @fwrite($fp, $contents);
    @fclose($fp);
    }
    if (!file_exists($filename))
    {
    return false;
    }
    if (copy($filename, $uploadfile))
    {
    @unlink($filename);
         return true;
    }
    else
    {
    @unlink($filename);
         return false;
    }
    }
    // ########################################################################################