Socket实现HTTP协议的文件上传.doc_第1页
Socket实现HTTP协议的文件上传.doc_第2页
Socket实现HTTP协议的文件上传.doc_第3页
Socket实现HTTP协议的文件上传.doc_第4页
Socket实现HTTP协议的文件上传.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

setFile( uploadFile, d:/images/ice.gif );/ $pf-sendRequest();/ echo $pf-getResponse();/=class IBPostFile var $url; /要发送文件的URL var $formData; /发送的表单数据 var $fileData; /文件数据 var $boundary; /数据分隔标识 var $response; /保存服务器返回的信息 var $username; /需要身份验证时的用户名 var $pwd; /需要身份验证时的密码 var $port; /端口号 var $debug = true; /是否调试 /* 函数: IBPostFile * 功能: Constructor * 参数: $url String 要发送文件的URL */ function IBPostFile( $url=, $port=80) $this-url = $url; $this-port = $port; $this-boundary = $this-createBoundary(); /* 函数: sendRequest * 功能: 发送请求并保存结果 */ function sendRequest() $urlArray = parse_url( $this-url ); $fp = fsockopen( $urlArrayhost, $this-port ); $requestData = $this-buildRequest(); /* fwrite( $fp, $requestData ); $content = ; while( !feof( $fp ) ) $content .= fread( $fp, 4096 ); fclose( $fp ); /*/ $this-response = $content; if( $this-debug ) echo -HTTP-REQUEST-; echo $requestData; echo -HTTP-RESPONSE-; echo $content; /*/ /* 函数: getResponse() * 功能: 返回服务器端的信息 */ function getResponse() return $this-response; /* 函数: setForm( $formData ) * 功能: 设置表单的字段值 * 参数: $formData Array 字段名和值的数组 */ function setForm( $formData ) $this-formData = $this-buildFormData( $formData ); /* 函数: setFile( $name, $filePath ) * 功能: 设置要发送的文件 * 参数: $name 文件名,即file域的name * 参数: $filePath 要发送的文件路径 */ function setFile( $name, $filePath ) $this-fileData = $this-buildFileData( $name, $filePath ); /* 函数: setAuthor( $user, $pwd ) * 功能: 设置身份验证时需要的用户名和密码 * 参数: $user 用户名 * 参数: $pwd 密码 */ function setAuthor( $user, $pwd ) $this-username = $user; $this-pwd = $pwd; /* 函数: buildRequest() * 功能: 建立请求 */ function buildRequest() $urlArray = parse_url( $this-url ); $request = array(); $request = POST $urlArraypath HTTP/1.0; $request = Host: $urlArrayhost; $request = User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0); $request = Accept: */*; $request = Accept-Language: zh-cn; $request = Connection: Keep-Alive; $request = Cache-Control: no-cache; /需要身份验证 if ( !empty( $this-username ) & !empty( $this-pwd ) ) $request = Authorization: BASIC . base64_encode( $this-username.:.$this-pwd ); $request = Content-Type: multipart/form-data; boundary=$this-boundary; $request = Content-Length: . $this-getDataLength() . rn; $requestString = join( rn, $request ) . rn . $this-formData . rn . $this-fileData; if( $this-debug ) echo - REQUEST_INFOMATION -; echo . $requestString . ; return $requestString; /* 函数: getDataLength() * 功能: 返回要发送数据的长度 */ function getDataLength() return strlen( $this-formData ) + strlen(rn) + strlen( $this-fileData ); /* 函数: buildFormData() * 功能: 创建发送的数据格式 */ function buildFormData( $formData ) $postData = array(); foreach( $formData as $k = $v ) $row = array(); $row = -$this-boundary; $row = Content-Disposition: form-data; name=$krn; $row = $v; $postData = join( rn, $row ); return join( rn, $postData ); /* 函数: buildFileData( $name, $filePath ) * 功能: 创建发送的文件格式 */ function buildFileData( $name, $filePath ) /读取文件信息 $fname = basename( $filePath ); $fp = fopen ( $filePath, r ); $data = fread ( $fp, filesize( $filePath ) ); fclose ($fp); $postData = array(); $postData = -$this-boundary; $postData = Content-Disposition: form-data; name=$name; filename=$fnamern; /$postData = Content-Type: text/plainrn; $postData = $dat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论