功能截图:

实现思路:首先要对用户输入的URL进行快速的合法性判断,包括文件大小,文件类型等。然后再下载,再进行后处理等。
实现1、首先不下载,快速判断文件类型与文件大小
      //get image size  and MIME type added by chenming 2012-7-20
     function getFileSizeAndType($url){
        $result = array();
        $url = parse_url( $url);
        if($fp = @fsockopen($url[ 'host'],empty($url['port' ])?80: $url['port'],$error)){
               fputs($fp,"GET " .(empty( $url['path'])? ‘/’:$url[ 'path'])." HTTP/1.1\r\n");
               fputs($fp,"Host: $url[host] \r\n\r\n");
               while(!feof ($fp)){
                     $tmp = fgets($fp);
                      if(trim($tmp) == ”){
                            break;
                     } else if(preg_match (‘/Content-Length:(.*)/si’,$tmp,$arr)){
                           $result[ 'size'] = trim($arr[ 1]);
                     } else if(preg_match (‘/Content-Type:(.*)/si’, $tmp, $arr)){
                           $result[ 'type'] = trim($arr[ 1]);
                     }
                      if(count($result) == 2){
                            return $result;
                     }
              }
               return null;
       } else{
               return null;
       }
     }
第2、以上类型与大小都检查通过后,再下载文件
      /*
      * 下载图片 ,并获取类型, added by chenming 2012-7-19
      * */
      function getRemoteContentType($remoteFile){
             # the request
            $ch = curl_init($remoteFile);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $data = curl_exec($ch);
             # get the content type
            $info = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
             return array(‘data’ =>$data, ‘type’=>$info);
     }
第3、对图片大小进行处理,获取刚下载图片大小的方法
     $datainfo = $this-> getRemoteContentType ($url);  //下载内容并找出MIME类型
     $file = $datainfo[ 'data'];
     $img = imagecreatefromstring($datainfo['data' ]);
     $img_width = imagesx($img);
     $img_height = imagesy($img);