php使用socket获取远程图片
来源:互联网 发布:佳能正品服务软件下载 编辑:程序博客网 时间:2024/06/05 17:39
步骤:
1,匹配URL中的主机名和文件部分
2,创建socket并连接到目标服务器
3,构造HTTP请求并发送
4,读取HTTP响应并解析
5,保存内容到文件并关闭socket连接
<?php/* * 使用socket获取远程资源(网页,图片等) * url 资源URL * savepath 资源的保存路径 * return true/false */function get_remote_picture($url,$savepath="./"){ set_time_limit(0); $pattern = '/(http:\/\/)?([^\/]+)(.+)/'; $res = preg_match($pattern, $url, $matches); if($res == 0){ return false; } $host = "";//主机名 $file = "";//请求的文件 if(count($matches) == 3){ $host = $matches[1]; $file = $matches[2]; }else if(count($matches) == 4){ $host = $matches[2]; $file = $matches[3]; }else{ return false; } $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); $res = socket_connect($socket,gethostbyname($host),80); if(!$res){ //echo socket_strerror(socket_last_error($socket)); socket_close($socket); return false; } $request = ""; $request .= "GET $file HTTP/1.1\r\n"; $request .= "Host: $host\r\n"; $request .= "Connection: close\r\n\r\n"; $len = socket_write($socket,$request); $response = ""; while($buf=socket_read($socket,512)){ if(strlen($buf) == 0){ break; } $response .= $buf; } if(strpos($response,"\r\n\r\n")){ $arr = explode("\r\n\r\n",$response); if(!file_exists($savepath)){ @mkdir($savepath); } $savepath = rtrim($savepath,'/').'/'; file_put_contents($savepath.basename($file),$arr[1]); }else{ socket_close($socket); return false; } socket_close($socket); return true;} /* 获取百度logo */$url = "http://su.bdimg.com/static/superplus/img/logo_white.png";$result = get_remote_picture($url);if($result){ echo 'get remote picture success';}else{ echo 'get remote picture failed';}
0 0
- php使用socket获取远程图片
- php使用socket获取远程图片
- php使用socket获取远程图片
- php使用curl来获取远程图片
- php远程获取图片
- php 获取远程图片
- Php远程获取图片类
- 使用PHP采集远程图片
- php获取远程图片并保存本地
- PHP 远程图片获取到本地
- PHP: 获取远程图片的大小
- php获取远程图片存储到本地
- php 获取远程图片的一个方法
- PHP获取远程图片保存到本地
- php 使用GD库下载远程图片
- 使用PHP实现采集远程图片功能
- 使用PHP实现采集远程图片功能
- 自定义glide数据源,使用socket获取图片
- line_fit
- 借船过河:一个据说能看穿你的人性和欲望的心理测试
- caffe的mnist格式数据生成和mnist格式数据转npy
- 配置什么都没有的精简ubuntu系统(修改apt-get默认源)
- 【URAL 1513】Lemon Tale(DP+高精度)
- php使用socket获取远程图片
- Android stdio-编译 卡在Refreshing Gradle project
- xml、json、protobuf、thrift与avro
- ssh隧道
- Java Range
- CocoaPods安装和使用及问题:Setting up CocoaPods master repo
- 如何在Mac OS X上安装 Ruby运行环境
- nginx 命令行操作
- EventBus使用详解