php数据流 php输出流

php curl选项列表(超详细)本篇文章是对php中的curl选项列表进行了详细的分析介绍 需要的朋友参考下
第一类对于下面的这些option的可选参数 value应该被设置一个bool类型的值 选项 可选value值 备注CURLOPT_AUTOREFERER当根据Location:重定向时 自动设置header中的Referer:信息 CURLOPT_BINARYTRANSFER 在启用CURLOPT_RETURNTRANSFER的时候 返回原生的(Raw)输出CURLOPT_COOKIESESSION启用时curl会仅仅传递一个session cookie 忽略其他的cookie 默认状况下cURL会将所有的cookie返回给服务端 session cookie是指那些用来判断服务器端的session是否有效而存在的cookieCURLOPT_CRLF启用时将Unix的换行符转换成回车换行符CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存 此项为线程安全的 并且默认启用CURLOPT_FAILONERROR显示HTTP状态码 默认行为是忽略编号小于等于 的HTTP信息CURLOPT_FILETIME启用时会尝试修改远程文档中的信息 结果信息会通过 curl_getinfo()函数的CURLINFO_FILETIME选项返回 curl_getinfo()CURLOPT_FOLLOWLOCATION启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器 使用CURLOPT_MAXREDIRS可以限定递归返回的数量CURLOPT_FORBID_REUSE在完成交互以后强迫断开连接 不能重用CURLOPT_FRESH_CONNECT强制获取一个新的连接 替代缓存中的连接CURLOPT_FTP_USE_EPRT启用时当FTP下载时 使用EPRT (或 LPRT)命令 设置为FALSE时禁用EPRT和LPRT 使用PORT命令 onlyCURLOPT_FTP_USE_EPSV启用时 在FTP传输过程中回复到PASV模式前首先尝试EPSV命令 设置为FALSE时禁用EPSV命令 CURLOPT_FTPAPPEND 启用时追加写入文件而不是覆盖它CURLOPT_FTPASCIICURLOPT_TRANSFERTEXT的别名CURLOPT_FTPLISTONLY启用时只列出FTP目录的名字CURLOPT_HEADER启用时会将头文件的信息作为数据流输出CURLINFO_HEADER_OUT启用时追踪句柄的请求字符串 从 PHP 开始可用 CURLINFO_前缀是故意的(intentional)CURLOPT_HTTPGET启用时会设置HTTP的method为GET 因为GET是默认是 所以只在被修改的情况下使用CURLOPT_HTTPPROXYTUNNEL启用时会通过HTTP代理来传输CURLOPT_MUTE启用时将cURL函数中所有修改过的参数恢复默认值CURLOPT_NETRC在连接建立以后 访问~/ netrc文件获取用户名和密码信息连接远程站点CURLOPT_NOBODY启用时将不对HTML中的BODY部分进行输出CURLOPT_NOPROGRESS启用时关闭curl传输的进度条 此项的默认设置为启用 Note: PHP自动地设置这个选项为TRUE 这个选项仅仅应当在以调试为目的时被改变CURLOPT_NOSIGNAL启用时忽略所有的curl传递给php进行的信号 在SAPI多线程传输时此项被默认启用 cURL 时被加入CURLOPT_POST启用时会发送一个常规的POST请求 类型为 application/x form urlencoded 就像表单提交的一样CURLOPT_PUT启用时允许HTTP发送文件 必须同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE CURLOPT_RETURNTRANSFER 将 curl_exec()获取的信息以文件流的形式返回 而不是直接输出CURLOPT_SSL_VERIFYPEER禁 用后cURL将终止从服务端进行验证 使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为 )被启用 CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为 FALSE 自cURL 开始默认为TRUE 从cURL 开始默认绑定安装CURLOPT_TRANSFERTEXT启用后对FTP传输使用ASCII模式 对于LDAP 它检索纯文本信息而非HTML 在Windows系统上 系统不会把STDOUT设置成binary模式CURLOPT_UNRESTRICTED_AUTH在使用CURLOPT_FOLLOWLOCATION产生的header中的多个locations中持续追加用户名和密码信息 即使域名已发生改变CURLOPT_UPLOAD启用后允许文件上传 CURLOPT_VERBOSE 启用时会汇报所有的信息 存放在STDERR或指定的CURLOPT_STDERR中第二类对于下面的这些option的可选参数 value应该被设置一个integer类型的值 选项 可选value值 备注CURLOPT_BUFFERSIZE每次获取的数据中读入缓存的大小 但是不保证这个值每次都会被填满 在cURL 中被加入CURLOPT_CLOSEPOLICY不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST 还存在另外三个CURLCLOSEPOLICY_ 但是cURL暂时还不支持CURLOPT_CONNECTTIMEOUT在发起连接前等待的时间 如果设置为 则无限等待CURLOPT_CONNECTTIMEOUT_MS尝试连接等待的时间 以毫秒为单位 如果设置为 则无限等待 在cURL 中被加入 从PHP 开始可用CURLOPT_DNS_CACHE_TIMEOUT设置在内存中保存DNS信息的时间 默认为 秒CURLOPT_FTPSSLAUTHFTP验证方式 CURLFTPAUTH_SSL (首先尝试SSL) CURLFTPAUTH_TLS (首先尝试TLS)或CURLFTPAUTH_DEFAULT (让cURL自动决定) 在cURL 中被加入CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_NONE (默认值 让cURL自己判断使用哪个版本) CURL_HTTP_VERSION_ _ (强制使用 HTTP/ )或CURL_HTTP_VERSION_ _ (强制使用 HTTP/ )CURLOPT_HTTPAUTH使用的HTTP验证方法 可选的值有 CURLAUTH_BASIC CURLAUTH_DIGEST CURLAUTH_GSSNEGOTIATE CURLAUTH_NTLM CURLAUTH_ANY和CURLAUTH_ANYSAFE 可以使用|位域(或)操作符分隔多个值 cURL让服务器选择一个支持最好的值 CURLAUTH_ANY等价于CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM CURLAUTH_ANYSAFE等价于CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLMCURLOPT_INFILESIZE设定上传文件的大小限制 字节(byte)为单位CURLOPT_LOW_SPEED_LIMIT当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec) PHP会根据CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输CURLOPT_LOW_SPEED_TIME当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec) PHP会根据CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输CURLOPT_MAXCONNECTS允许的最大连接数量 超过是会通过CURLOPT_CLOSEPOLICY决定应该停止哪些连接CURLOPT_MAXREDIRS指定最多的HTTP重定向的数量 这个选项是和CURLOPT_FOLLOWLOCATION一起使用的CURLOPT_PORT用来指定连接端口 (可选项)CURLOPT_PROTOCOLSCURLPROTO_* 的位域指 如果被启用 位域值会限定libcurl在传输过程中有哪些可使用的协议 这将允许你在编译libcurl时支持众多协议 但是限制只是用它们 中被允许使用的一个子集 默认libcurl将会使用全部它支持的协议 参见CURLOPT_REDIR_PROTOCOLS 可用的协议选项 为 CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_FTP CURLPROTO_FTPS CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_LDAP CURLPROTO_LDAPS CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_TFTP CURLPROTO_ALL 在cURL 中被加入CURLOPT_PROXYAUTHHTTP代理连接的验证方式 使用在CURLOPT_HTTPAUTH中的位域标志来设置相应选项 对于代理验证只有CURLAUTH_BASIC和CURLAUTH_NTLM当前被支持 在cURL 中被加入CURLOPT_PROXYPORT代理服务器的端口 端口也可以在CURLOPT_PROXY中进行设置CURLOPT_PROXYTYPE不是CURLPROXY_HTTP (默认值) 就是CURLPROXY_SOCKS 在cURL 中被加入CURLOPT_REDIR_PROTOCOLSCURLPROTO_* 中的位域值 如果被启用 位域值将会限制传输线程在CURLOPT_FOLLOWLOCATION开启时跟随某个重定向时可使用的协议 这将使你对重定向 时限制传输线程使用被允许的协议子集默认libcurl将会允许除FILE和SCP之外的全部协议 这个和 预发布版本种无条件地跟随所有支持 的协议有一些不同 关于协议常量 请参照CURLOPT_PROTOCOLS 在cURL 中被加入CURLOPT_RESUME_FROM在恢复传输时传递一个字节偏移量(用来断点续传)CURLOPT_SSL_VERIFYHOST检查服务器SSL证书中是否存在一个公用名(mon name) 译者注 公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain) 检查公用名是否存在 并且是否与提供的主机名匹配CURLOPT_SSLVERSION使用的SSL版本( 或 ) 默认情况下PHP会自己检测这个值 尽管有些情况下需要手动地进行设置CURLOPT_TIMECONDITION如 果在CURLOPT_TIMEVALUE指定的某个时间以后被编辑过 则使用CURL_TIMECOND_IFMODSINCE返回页面 如果没有被修改 过 并且CURLOPT_HEADER为true 则返回一个" Not Modified"的header CURLOPT_HEADER为false 则使用CURL_TIMECOND_IFUNMODSINCE 默认值为 CURL_TIMECOND_IFUNMODSINCECURLOPT_TIMEOUT设置cURL允许执行的最长秒数CURLOPT_TIMEOUT_MS设置cURL允许执行的最长毫秒数 在cURL 中被加入 从PHP 起可使用CURLOPT_TIMEVALUE设置一个CURLOPT_TIMECONDITION使用的时间戳 在默认状态下使用的是CURL_TIMECOND_IFMODSINCE第三类对于下面的这些option的可选参数 value应该被设置一个string类型的值 选项 可选value值 备注CURLOPT_CAINFO一个保存著 个或多个用来让服务端验证的证书的文件名 这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义CURLOPT_CAPATH一个保存著多个CA证书的目录 这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的CURLOPT_COOKIE设定HTTP请求中"Cookie: "部分的内容 多个cookie用分号分隔 分号后带一个空格(例如 "fruit=apple; colour=red")CURLOPT_COOKIEFILE包含cookie数据的文件名 cookie文件的格式可以是Netscape格式 或者只是纯HTTP头部信息存入文件CURLOPT_COOKIEJAR连接结束后保存cookie信息的文件 CURLOPT_CUSTOMREQUEST 使 用一个自定义的请求信息来代替"GET"或"HEAD"作为HTTP请求 这对于执行"DELETE" 或者其他更隐蔽的HTTP请求 有效值如"GET" "POST" "CONNECT"等等 也就是说 不要在这里输入整个HTTP请求 例如输 入"GET /index HTTP/ rnrn"是不正确的Note:在确定服务器支持这个自定义请求的方法前不要使用CURLOPT_EGDSOCKET类似CURLOPT_RANDOM_FILE 除了一个Entropy Gathering Daemon套接字CURLOPT_ENCODINGHTTP请求头中"Accept Encoding: "的值 支持的编码有"identity" "deflate"和"gzip" 如果为空字符串"" 请求头会发送所有支持的编码类型 在cURL 中被加入CURLOPT_FTPPORT这个值将被用来获取供FTP"POST"指令所需要的IP地址 "POST"指令告诉远程服务器连接到我们指定的IP地址 这个字符串可以是纯文本的IP地址 主机名 一个网络接口名(UNIX下)或者只是一个 来使用默认的IP地址CURLOPT_INTERFACE网络发送接口名 可以是一个接口名 IP地址或者是一个主机名CURLOPT_KRB LEVELKRB (Kerberos ) 安全级别 下面的任何值都是有效的(从低到高的顺序) "clear" "safe" "confidential" "private" 如果字符串 和这些都不匹配 将使用"private" 这个选项设置为NULL时将禁用KRB 安全认证 目前KRB 安全认证只能用于FTP传输CURLOPT_POSTFIELDS全 部数据使用HTTP协议中的"POST"操作来发送 要发送文件 在文件名前面加上@前缀并使用完整路径 这个参数可以通过urlencoded后的字符 串类似 para =val ? =val或使用一个以字段名为键值 字段数据为值的数组 如果value是一个数 组 Content Type头将会被设置成multipart/form dataCURLOPT_PROXYHTTP代理通道CURLOPT_PROXYUSERPWD一个用来连接到代理的"[username]:[password]"格式的字符串CURLOPT_RANDOM_FILE一个被用来生成SSL随机数种子的文件名CURLOPT_RANGE以"X Y"的形式 其中X和Y都是可选项获取数据的范围 以字节计 HTTP传输线程也支持几个这样的重复项中间用逗号分隔如"X Y N M"CURLOPT_REFERER在HTTP请求头中"Referer: "的内容CURLOPT_SSL_CIPHER_LIST一个SSL的加密算法列表 例如RC SHA和TLSv 都是可用的加密列表CURLOPT_SSLCERT一个包含PEM格式证书的文件名CURLOPT_SSLCERTPASSWD使用CURLOPT_SSLCERT证书需要的密码CURLOPT_SSLCERTTYPE证书的类型 支持的格式有"PEM" (默认值) "DER"和"ENG" 在cURL 中被加入CURLOPT_SSLENGINE用来在CURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量CURLOPT_SSLENGINE_DEFAULT用来做非对称加密操作的变量CURLOPT_SSLKEY包含SSL私钥的文件名CURLOPT_SSLKEYPASSWD在CURLOPT_SSLKEY中指定了的SSL私钥的密码Note:由于这个选项包含了敏感的密码信息 记得保证这个PHP脚本的安全CURLOPT_SSLKEYTYPECURLOPT_SSLKEY中规定的私钥的加密类型 支持的密钥类型为"PEM"(默认值) "DER"和"ENG"CURLOPT_URL需要获取的URL地址 也可以在 curl_init()函数中设置CURLOPT_USERAGENT在HTTP请求中包含一个"User Agent: "头的字符串CURLOPT_USERPWD传递一个连接中需要的用户名和密码 格式为 "[username]:[password]"第四类对于下面的这些option的可选参数 value应该被设置一个数组 选项 可选value值 备注CURLOPT_HTTP ALIASES响应码数组 数组中的响应吗被认为是正确的响应 否则被认为是错误的 在cURL 中被加入CURLOPT_HTTPHEADER一个用来设置HTTP头字段的数组 使用如下的形式的数组进行设置 array( Content type: text/plain Content length: )CURLOPT_POSTQUOTE在FTP请求执行完成后 在服务器上执行的一组FTP命令CURLOPT_QUOTE一组先于FTP请求的在服务器上执行的FTP命令
lishixinzhi/Article/program/PHP/201311/21090
用php如何把图像数据流保存imagegif(resource $image[, string $filename]) 从 image图像以 filename 为文件名创建一个GIF 图像 。image参数是imagecreate() 或imagecreatefrom* 函数的返回值 。
imagejpeg(resource $image[, string $filename]) 从 image图像以 filename 为文件名创建一个JPEG 图像 。
imagepng(resource $image[, string $filename]) 将 GD 图像流(image)以PNG 格式输出到标准输出(通常为浏览器)php数据流,或者如果用filename 给出了文件名则将其输出到该文件 。
filename 文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流 。
这几个函数php数据流你参考一下,希望对你有帮助 。
php如何将BLOB类型的数据存储到服务器上blob是一个对象容器,只能由js自身读取并作为二进制数据流上传至服务器 。
这种你得修改js代码建立一个blob上传至后台 , 然后后台再用脚本接收并储存为文件 。
PHP关于获取二进制数据流转换为文件的方法$content = $_POST['data'];
$fp = fopen('/tmp/newfile.bin','w');
fwrite($fp,$content);
以上例子是在data参数上传二进制,并保存到/tmp/newfile.bin中,解析json用json_decode,然后把二进制的那个值赋给content就可以
PHP curl 模拟表单数据流multipart/form-data上传文件在调用公众号接口".$token."type=".$type;
上传永久素材文件总是返回 "{\"errcode\":41005,\"errmsg\":\"media data missing\"}"
经过多次测试使用下面的方式,可以正常上传
//调用测试
protected static $url;
protected static $delimiter;
protected static $instance;
public function index()
{
static::$delimiter = uniqid();
$basename = Request::instance()-root();
if (pathinfo($basename, PATHINFO_EXTENSION) == 'php') {
$basename = dirname($basename);
}
$result=$this-wxAddMaterial($token,$basename.'/upload/images/gnlog.jpg','image');
}
// 新增其他类型永久素材
public function wxAddMaterial($token,$filename='',$type='') {
// 设置请求参数
static::$url = "".$token."type=".$type;
$filePath = str_replace('\\', '/', $filename);
// 发送请求
$imginfo=pathinfo($filePath);
$fields = array(
'media'=file_get_contents(".".$filePath),
'filename'=$imginfo["basename"],
);
$res = $this-putPart( $fields);
// 发送请求
return $res;
}
//推送文件流
public function putPart($param) {
$post_data = https://www.04ip.com/post/static::buildData($param);
$curl = curl_init(static::$url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
"Content-Type: multipart/form-data; boundary=" . static::$delimiter,
"Content-Length: " . strlen($post_data)
]);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
//编译请求头格式和数据流
private static function buildData($param){
$datahttps://www.04ip.com/post/= '';
$eol = "\r\n";
$upload = $param['media'];
unset($param['media']);
foreach ($param as $name = $content) {
$data .= "--" . static::$delimiter . "\r\n"
. 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
. $content . "\r\n";
}
$data .= "--" . static::$delimiter . $eol
. 'Content-Disposition: form-data; name="media"; filename="' . $param['filename'] . '"' . "\r\n"
. 'Content-Type:application/octet-stream'."\r\n\r\n";
$data .= $upload . "\r\n";
$data .= "--" . static::$delimiter . "--\r\n";
return $data;
}
根据自己的实际情况稍作修改
php处理字节流字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
字符流和字节流都是什么
流就是stream.一个连续的字节队列 。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的 。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统 。它本身并不是一个物理设备的概念 。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出 。网络中数据传输是基于消息或数据分组的 。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道 。
从流的构造上来说,它由一个流头 , 一个流驱动程序尾,以及其间的零个或若干个可选模块构成。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流 。驱动程序尾与底层设备通信 。在流的中间的模块是处理数据的 。
字节流与字符流主要的区别是他们的的处理对象
字节流是由字节组成的,字符流是由字符组成的.Java里字符由两个字节组成.
字节流是最基本的,所有的InputStrem和OutputStream的子类都是 , 主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化 。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码 , 通常我们都省略了,那系统就用操作系统默认的lang
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送 。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看 。此时多媒体文件的剩余部分将在后台的服务器内继续下载 。
【php数据流 php输出流】php数据流的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php输出流、php数据流的信息别忘了在本站进行查找喔 。

    推荐阅读