首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

dedecms的dededown类获取远程图片的函数用如下,调用的时候传递过去的也是有效,但是发现以下两句调用为空 无法获取解决方法

2012-03-04 
dedecms的dededown类获取远程图片的函数用如下,调用的时候传递过去的也是有效,但是发现以下两句调用为空

dedecms的dededown类获取远程图片的函数用如下,调用的时候传递过去的也是有效,但是发现以下两句调用为空 无法获取
dedecms的dededown类获取远程图片的函数用如下,调用的时候传递过去的也是有效,但是发现以下两句为

空,无法获取


获取远程图片的函数用如下,调用的时候传递过去的也是有效,但是发现以下两句为空,无法获取
$htd->openurl( $url );

$htd->gethead( "content-type" )

以上2句调用为空。


function getremoteimage( $url, $rndtrueName )
{
  // echo $url;[img]http://www.golffactorystore.com/images/200910/goods_img/599_P_1255757135855.jpg[/img]
  $revalues = array( );
  $ok = false;
  $htd = new dedehttpdown( );

 
  $htd->openurl( $url );
  //echo $htd->openurl( $url );

  $sparr = array( "image/pjpeg", "image/jpeg", "image/gif", "image/jpg", "image/png", 

"image/xpng", "image/wbmp" );
  
   
  if ( !in_array( $htd->gethead( "content-type" ), $sparr ) )
  {  
  echo "1";
  return "";
   
  }
   

  make_dir( dirname( $rndtrueName ) );
  $itype = $htd->gethead( "content-type" );
   
  $ok = $htd->savetobin( $rndtrueName );
  if ( $ok )
  {
   
  $data = getimagesize( $rndtrueName );
  $revalues[0] = $rndtrueName;
  list( , $revalues[2], $revalues[2] ) = $data;
  }
  $htd->close( );
  if ( $ok )
  {
  return $revalues;
  }
  return "";
}



  
  //用Http协议下载文件
  function savetobin( $savefilename )
  {
   
   
  if ( !$this->isgetok( ) )
  {
   
  return false;
  }
  if ( @feof( $this->m_fp ) )
  {
  $this->m_error = "连接已经关闭!";
  return false;
  }
   
  $fp = fopen( $savefilename, "w" );
  while ( !feof( $this->m_fp ) )
  {
  fwrite( $fp, fread( $this->m_fp, 1024 ) );
  }
  fclose( $this->m_fp );
  fclose( $fp );
  return true;
  }



  //打开指定网址
  function openurl( $url, $requestType = "GET" )
  {
   
  $this->resetany( );
  $this->JumpCount = 0;
  $this->m_httphead = array( );
  //print_r($this->m_httphead);
  /*
  $extend =explode(\".\" , $url);
  $va=count($extend)-1;
  $extend[$va];
   
  $this->m_httphead[""]=
  */
  $this->m_html = "";
  $this->reTry = 0;
  $this->close( );
   
  //初始化系统

   
  $this->privateinit( $url );
   
  $this->privatestartsession();
   
  }

  //开始HTTP会话
  function privatestartsession( $requestType = "GET" )
  {
  if ( !$this->privateopenhost( ) )
  {
  $this->m_error .= "打开远程主机出错!";
  return false;
  }


  ++$this->reTry;
  if ( $this->gethead( "http-edition" ) == "HTTP/1.1" )
  {
  $httpv = "HTTP/1.1";
  }
  else
  {
  $httpv = "HTTP/1.0";
  }
  $ps = explode( "?", $this->m_urlpath );
  //echo $this->m_urlpath;/images/200910/goods_img/599_P_1255757135855.jpg
  //print_r($ps);Array([0] => /images/200910/goods_img/599_P_1255757135855.jpg)
  $headString = "";
  //发送固定的起始请求头GET、Host信息
  if ( $requestType == "GET" )
  {
  $headString .= "GET ".$this->m_urlpath.( " ".$httpv."\r\n" );
  }
  else
  {
  $headString .= "POST ".$ps[0].( " ".$httpv."\r\n" );
  }
  $this->m_puthead['Host'] = $this->m_host;
  //发送用户自定义的请求头
  if ( !isset( $this->m_puthead['Accept'] ) )
  {
  $this->m_puthead['Accept'] = "*/*";
  }
  if ( !isset( $this->m_puthead['User-Agent'] ) )
  {
  $this->m_puthead['User-Agent'] = "Mozilla/4.0 (compatible; MSIE 6.0; 

Windows NT 5.2)";
  }
  if ( !isset( $this->m_puthead['Refer'] ) )
  {
  $this->m_puthead['Refer'] = "http://".$this->m_puthead['Host'];
  }
  foreach ( $this->m_puthead as $k => $v )
  {
  $k = trim( $k );
  $v = trim( $v );
  if ( !( $k != "" ) && !( $v != "" ) )
  {
  $headString .= "{$k}: {$v}\r\n";
  }
  }
  //echo $this->m_fp;
  fputs( $this->m_fp, $headString );
  if ( $requestType == "POST" )
  {
   
  $postdata = "";
   
  if ( 1 < count( $ps ) )
  {
   
  for($i = 1;$i < count( $ps );++$i)
  {
  $postdata .= $ps[$i];
   
  //break;
  }
   
  }
  else
  {
  $postdata = "OK";
  }
  $plen = strlen( $postdata );
  fputs( $this->m_fp, "Content-Type: application/x-www-form-

urlencoded\r\n" );
  fputs( $this->m_fp, "Content-Length: ".$plen."\r\n" );
   
  //发送固定的结束请求头
  //HTTP1.1协议必须指定文档结束后关闭链接,否则读取文档时无法使用feof判断结束
  if ( $httpv == "HTTP/1.1" )
  {
  fputs( $this->m_fp, "Connection: Close\r\n\r\n" );
  }
  else
  {
  fputs( $this->m_fp, "\r\n" );
  }
  if ( $requestType == "POST" )
  {
  fputs( $this->m_fp, $postdata );
  }
  //获取应答头状态信息
  $httpstas = explode( " ", fgets( $this->m_fp, 256 ) );
  $this->m_httphead['http-edition'] = trim( $httpstas[0] );


  $this->m_httphead['http-state'] = trim( $httpstas[1] );
   
  $this->m_httphead['http-describe'] = "";
  $i = 2;
  for ( ; $i < count( $httpstas ); ++$i )
  {
  $this->m_httphead['http-describe'] .= " ".trim( $httpstas[$i] );
  }
  //获取详细应答头
  while ( !feof( $this->m_fp ) )
  {
  $line = trim( fgets( $this->m_fp, 256 ) );
  if ( $line == "" )
  {
  break;
  }
  $hkey = "";
  $hvalue = "";
  $v = 0;
  $i = 0;
  for ( ; $i < strlen( $line ); ++$i )
  {
  if ( $v == 1 )
  {
  $hvalue .= $line[$i];
  }
  if ( $line[$i] == ":" )
  {
  $v = 1;
  }
  if ( $v == 0 )
  {
  $hkey .= $line[$i];
  }
  }
  $hkey = trim( $hkey );
  if ( $hkey != "" )
  {
  $this->m_httphead[strtolower( $hkey )] = trim( $hvalue );
  }
  }
   
  //如果连接被不正常关闭,重试
  if ( feof( $this->m_fp ) )
  {
  if ( 10 < $this->reTry )
  {
  return false;
  }
  $this->privatestartsession( $requestType );
  }
  //判断是否是3xx开头的应答
  if ( ereg( "^3", $this->m_httphead['http-state'] ) )
  {
  if ( 3 < $this->JumpCount )
  {
  return;
  }
  if ( isset( $this->m_httphead['location'] ) )
  {
  $newurl = $this->m_httphead['location'];
  if ( eregi( "^http", $newurl ) )
  {
  $this->jumpopenurl( $newurl );
  }
  else
  {
  $newurl = $this->fillurl( $newurl );
  $this->jumpopenurl( $newurl );
  }
  }
  else
  {
  $this->m_error = "无法识别的答复!";
  }
  }
  }


  //初始化系统

   
  function privateinit( $url )
  {
   
  if ( $url == "" )
  {
  return;
  }
  //echo $url; 

[img]http://www.golffactorystore.com/images/200910/goods_img/599_P_1255757135855.jpg[/img]
  $urls = "";
  $urls = @parse_url( $url );
   
  $this->m_url = $url;
  if ( is_array( $urls ) )
  {
  $this->m_host = $urls['host'];
  //echo $this->m_host;
  if ( !empty( $urls['scheme'] ) )
  {
  $this->m_scheme = $urls['scheme'];
  }
  if ( !empty( $urls['user'] ) )


  {
  $this->m_user = $urls['user'];
  }
  if ( !empty( $urls['pass'] ) )
  {
  $this->m_pass = $urls['pass'];
  }
  if ( !empty( $urls['port'] ) )
  {
  $this->m_port = $urls['port'];
  }
  if ( !empty( $urls['path'] ) )
  {
  $this->m_path = $urls['path'];
  }
   
  $this->m_urlpath = $this->m_path;
  if ( !empty( $urls['query'] ) )
  {
  $this->m_query = $urls['query'];
  $this->m_urlpath .= "?".$this->m_query;
  }
  print_r($urls['query']); 
   
  $this->HomeUrl = $urls['host'];
   
  $this->BaseUrlPath = $this->HomeUrl.$urls['path'];
   
  $this->BaseUrlPath = preg_replace( "/\\/([^\\/]*)\\.(.*)\$/", "/", 

$this->BaseUrlPath );
   
  $this->BaseUrlPath = preg_replace( "/\\/\$/", "", $this->BaseUrlPath 

);
  //echo $this->BaseUrlPath;gwww.golffactorystore.com/images/200910/goods_img
   
  }
  }

[解决办法]
这么复杂的问题,代码太长注意一下排版,大哥

热点排行