php 利用fsockopen GET/POST 提交表单及上传文件
1.GET
get.php
- <?php
- $host = 'demo.fdipzone.com';
- $port = 80;
- $errno = '';
- $errstr = '';
- $timeout = 30;
- $url = '/socket/getapi.php';
- $param = array(
- 'name' => 'fdipzone',
- 'gender' => 'man'
- );
- $url = $url.'?'.http_build_query($param);
- // create connect
- $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
- if(!$fp){
- return false;
- }
- // send request
- $out = "GET ${url} HTTP/1.1\r\n";
- $out .= "Host: ${host}\r\n";
- $out .= "Connection:close\r\n\r\n";
- fputs($fp, $out);
- // get response
- $response = '';
- while($row=fread($fp, 4096)){
- $response .= $row;
- }
- fclose($fp);
- $pos = strpos($response, "\r\n\r\n");
- $response = substr($response, $pos+4);
- echo $response;
- ?>
getapi.php
- <?php
- $name = $_GET['name'];
- $gender = $_GET['gender'];
- echo 'name='.$name.'<br>';
- echo 'gender='.$gender;
- ?>
2.POST
post.php
- <?php
- $host = 'demo.fdipzone.com';
- $port = 80;
- $errno = '';
- $errstr = '';
- $timeout = 30;
- $url = '/socket/postapi.php';
- $param = array(
- 'name' => 'fdipzone',
- 'gender' => 'man',
- 'photo' => file_get_contents('photo.jpg')
- );
- $data = http_build_query($param);
- // create connect
- $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
- if(!$fp){
- return false;
- }
- // send request
- $out = "POST ${url} HTTP/1.1\r\n";
- $out .= "Host:${host}\r\n";
- $out .= "Content-type:application/x-www-form-urlencoded\r\n";
- $out .= "Content-length:".strlen($data)."\r\n";
- $out .= "Connection:close\r\n\r\n";
- $out .= "${data}";
- fputs($fp, $out);
- // get response
- $response = '';
- while($row=fread($fp, 4096)){
- $response .= $row;
- }
- fclose($fp);
- $pos = strpos($response, "\r\n\r\n");
- $response = substr($response, $pos+4);
- echo $response;
- ?>
postapi.php
- <?php
- define('UPLOAD_PATH', dirname(__FILE__).'/upload');
- $name = $_POST['name'];
- $gender = $_POST['gender'];
- $photo = $_POST['photo'];
- $filename = time().'.jpg';
- file_put_contents(UPLOAD_PATH.'/'.$filename, $photo, true);
- echo 'name='.$name.'<br>';
- echo 'gender='.$gender.'<br>';
- echo '<img src="upload/'.$filename.'">';
- ?>
3.上传文件
file.php
- <?php
- $host = 'demo.fdipzone.com';
- $port = 80;
- $errno = '';
- $errstr = '';
- $timeout = 30;
- $url = '/socket/fileapi.php';
- $form_data = array(
- 'name' => 'fdipzone',
- 'gender' => 'man',
- );
- $file_data = array(
- array(
- 'name' => 'photo',
- 'filename' => 'photo.jpg',
- 'path' =>'photo.jpg'
- )
- );
- // create connect
- $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
- if(!$fp){
- return false;
- }
- // send request
- srand((double)microtime()*1000000);
- $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
- $data = "--$boundary\r\n";
- // form data
- foreach($form_data as $key=>$val){
- $data .= "Content-Disposition: form-data; name=\"".$key."\"\r\n";
- $data .= "Content-type:text/plain\r\n\r\n";
- $data .= rawurlencode($val)."\r\n";
- $data .= "--$boundary\r\n";
- }
- // file data
- foreach($file_data as $file){
- $data .= "Content-Disposition: form-data; name=\"".$file['name']."\"; filename=\"".$file['filename']."\"\r\n";
- $data .= "Content-Type: ".mime_content_type($file['path'])."\r\n\r\n";
- $data .= implode("",file($file['path']))."\r\n";
- $data .= "--$boundary\r\n";
- }
- $data .="--\r\n\r\n";
- $out = "POST ${url} HTTP/1.1\r\n";
- $out .= "Host:${host}\r\n";
- $out .= "Content-type:multipart/form-data; boundary=$boundary\r\n"; // multipart/form-data
- $out .= "Content-length:".strlen($data)."\r\n";
- $out .= "Connection:close\r\n\r\n";
- $out .= "${data}";
- fputs($fp, $out);
- // get response
- $response = '';
- while($row=fread($fp, 4096)){
- $response .= $row;
- }
- fclose($fp);
- $pos = strpos($response, "\r\n\r\n");
- $response = substr($response, $pos+4);
- echo $response;
- ?>
fileapi.php
- <?php
- define('UPLOAD_PATH', dirname(__FILE__).'/upload');
- $name = $_POST['name'];
- $gender = $_POST['gender'];
- $filename = time().'.jpg';
- echo 'name='.$name.'<br>';
- echo 'gender='.$gender.'<br>';
- if(move_uploaded_file($_FILES['photo']['tmp_name'], UPLOAD_PATH.'/'.$filename)){
- echo '<img src="upload/'.$filename.'">';
- }
- ?>
源码下载地址:点击下载
php 利用fsockopen GET/POST 提交表单及上传文件相关推荐
- Qt——记录:http表单格式上传文件到七牛云和阿里云
环境:windows10 版本:Qt 5.15.2 工具:Qt Creator 背景:通过http表单格式上传文件,兼容阿里云和七牛云. 一.记录问题:上传文件到阿里云 问题1:ErrorCode: ...
- Android Okhttp3的使用(很全面,包含Post提交字符串、键值对、表单、上传文件、无参请求和Get有参无参请求,还有自动添加token)
Okhttp简介 okhttp是现代化应用程序的网络通信的方式.它用来帮助程序交换数据和媒体信息,使用okhttp可以让你的程序加载物料(翻译为服务器数据更合适在)更加高效.更节省网络带宽. okht ...
- ajax 提交form表单,上传文件
参考 :https://blog.csdn.net/gu_wen_jie/article/details/72177714 注意:使用layui 按钮提交表单时,按钮会默认提交表单.解决如下: $(' ...
- java form 上传文件_JAVA入门[16]-form表单,上传文件
一.如何传递参数 @RequestMapping("/detail") public String detail(@RequestParam("id") int ...
- JAVA入门[16]-form表单,上传文件
一.如何传递参数 使用 @RequestParam 可以传递查询参数.例如:http://localhost:8092/category/detail?id=1 1 2 3 4 5 6 7 8 9 @ ...
- 前端实现axios以表单方式上传文件,优化上传速度
一.背景 最近在开发过程中,遇到的需要是需要上传高清图片,必须原图上传.由于在移动端应用,上传网络问题有很大的坑.当初的方案是直接采用将文件转化为base64,再进行上传,由于文件转化为base64后 ...
- 利用前端form表单的上传文件来发送邮箱附件
前端代码 <body> <form action="http://localhost:8080/email/form" method="post&quo ...
- linux编码 form表单,Linux以form表单形式上传文件讲解
先cd到要上传文件的目录下: root@iZ2zee1przeygbuu4rkwvxZ:/usr/local/test# ls 1.png DSC_0192.JPG test.apk 使用curl - ...
- python post 上传文件_如何在 Python 中模拟 post 表单来上传文件
展开全部 发个以前用urllib2模块来做的62616964757a686964616fe4b893e5b19e31333335343366class HTTPError(urllib2.HTTPDe ...
最新文章
- migration vmware vms to openstack kvm 修改vmware windows scsi to ide
- java切面1.6需要的包_Java技术 AspectJ
- word里双横线怎么打_美人计 | 精致打工人秀智,教你内双怎么化
- 计算机窗口预览图,window_Win7系统资源管理器加上预览窗格功能的方法, 图片缩略图是否太小?PPT - phpStudy...
- 使用libbpf-bootstrap构建BPF应用程序
- SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)
- android开发实践之1:安装部署环境设置
- 一个按钮控制暂停和开始java_《第一炉香》|一个女人的自甘堕落,从控制不住欲望开始...
- linux如何共享网络打印机,Ubunt如何安装网络打印机的详细图文步骤
- LaTeX里插入数学公式
- Box2D 的 PTM_RATIO
- 罗技 k380快捷键
- 北大韦神等十人获奖,均分1000万元,达摩院2021青橙奖出炉
- Net-snmp添加子代理示例
- java基于ssm框架的企业人事管理系统企业工资考勤系统
- VM(虚拟机)Ubuntu打不开
- 无人驾驶小车调试笔记(七)-- 相机校准
- GeneXus学习笔记——入门篇
- 【20保研】中国科学技术大学2019年第二届大学生大数据夏令营通知
- 服务器合租与虚拟主机的区别
热门文章
- 有序数组中查找数字的范围
- C++输入/输出文件
- 经典C语言程序100例之九七
- jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)
- 4.有关日期格式属性修改常识,v$nls_parameters,between and,查询指定部门的员工信息,in和null,like模糊查询,order by后面可以跟:列名、表达式、别名、序号
- Java 判断操作系统类型(适用于各种操作系统)
- inverse和Cascade详解
- 基于ZF网络的Faster RCNN网络结构详解(非常详细版)
- windows下VS2015配置caffe
- caffe基础(8):draw_net.py绘制网络结构