1.GET

get.php

[php] view plaincopy
  1. <?php
  2. $host = 'demo.fdipzone.com';
  3. $port = 80;
  4. $errno = '';
  5. $errstr = '';
  6. $timeout = 30;
  7. $url = '/socket/getapi.php';
  8. $param = array(
  9. 'name' => 'fdipzone',
  10. 'gender' => 'man'
  11. );
  12. $url = $url.'?'.http_build_query($param);
  13. // create connect
  14. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
  15. if(!$fp){
  16. return false;
  17. }
  18. // send request
  19. $out = "GET ${url} HTTP/1.1\r\n";
  20. $out .= "Host: ${host}\r\n";
  21. $out .= "Connection:close\r\n\r\n";
  22. fputs($fp, $out);
  23. // get response
  24. $response = '';
  25. while($row=fread($fp, 4096)){
  26. $response .= $row;
  27. }
  28. fclose($fp);
  29. $pos = strpos($response, "\r\n\r\n");
  30. $response = substr($response, $pos+4);
  31. echo $response;
  32. ?>

getapi.php

[php] view plaincopy
  1. <?php
  2. $name = $_GET['name'];
  3. $gender = $_GET['gender'];
  4. echo 'name='.$name.'<br>';
  5. echo 'gender='.$gender;
  6. ?>

2.POST

post.php

[php] view plaincopy
  1. <?php
  2. $host = 'demo.fdipzone.com';
  3. $port = 80;
  4. $errno = '';
  5. $errstr = '';
  6. $timeout = 30;
  7. $url = '/socket/postapi.php';
  8. $param = array(
  9. 'name' => 'fdipzone',
  10. 'gender' => 'man',
  11. 'photo' => file_get_contents('photo.jpg')
  12. );
  13. $data = http_build_query($param);
  14. // create connect
  15. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
  16. if(!$fp){
  17. return false;
  18. }
  19. // send request
  20. $out = "POST ${url} HTTP/1.1\r\n";
  21. $out .= "Host:${host}\r\n";
  22. $out .= "Content-type:application/x-www-form-urlencoded\r\n";
  23. $out .= "Content-length:".strlen($data)."\r\n";
  24. $out .= "Connection:close\r\n\r\n";
  25. $out .= "${data}";
  26. fputs($fp, $out);
  27. // get response
  28. $response = '';
  29. while($row=fread($fp, 4096)){
  30. $response .= $row;
  31. }
  32. fclose($fp);
  33. $pos = strpos($response, "\r\n\r\n");
  34. $response = substr($response, $pos+4);
  35. echo $response;
  36. ?>

postapi.php

[php] view plaincopy
  1. <?php
  2. define('UPLOAD_PATH', dirname(__FILE__).'/upload');
  3. $name = $_POST['name'];
  4. $gender = $_POST['gender'];
  5. $photo = $_POST['photo'];
  6. $filename = time().'.jpg';
  7. file_put_contents(UPLOAD_PATH.'/'.$filename, $photo, true);
  8. echo 'name='.$name.'<br>';
  9. echo 'gender='.$gender.'<br>';
  10. echo '<img src="upload/'.$filename.'">';
  11. ?>

3.上传文件

file.php

[php] view plaincopy
  1. <?php
  2. $host = 'demo.fdipzone.com';
  3. $port = 80;
  4. $errno = '';
  5. $errstr = '';
  6. $timeout = 30;
  7. $url = '/socket/fileapi.php';
  8. $form_data = array(
  9. 'name' => 'fdipzone',
  10. 'gender' => 'man',
  11. );
  12. $file_data = array(
  13. array(
  14. 'name' => 'photo',
  15. 'filename' => 'photo.jpg',
  16. 'path' =>'photo.jpg'
  17. )
  18. );
  19. // create connect
  20. $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
  21. if(!$fp){
  22. return false;
  23. }
  24. // send request
  25. srand((double)microtime()*1000000);
  26. $boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
  27. $data = "--$boundary\r\n";
  28. // form data
  29. foreach($form_data as $key=>$val){
  30. $data .= "Content-Disposition: form-data; name=\"".$key."\"\r\n";
  31. $data .= "Content-type:text/plain\r\n\r\n";
  32. $data .= rawurlencode($val)."\r\n";
  33. $data .= "--$boundary\r\n";
  34. }
  35. // file data
  36. foreach($file_data as $file){
  37. $data .= "Content-Disposition: form-data; name=\"".$file['name']."\"; filename=\"".$file['filename']."\"\r\n";
  38. $data .= "Content-Type: ".mime_content_type($file['path'])."\r\n\r\n";
  39. $data .= implode("",file($file['path']))."\r\n";
  40. $data .= "--$boundary\r\n";
  41. }
  42. $data .="--\r\n\r\n";
  43. $out = "POST ${url} HTTP/1.1\r\n";
  44. $out .= "Host:${host}\r\n";
  45. $out .= "Content-type:multipart/form-data; boundary=$boundary\r\n"; // multipart/form-data
  46. $out .= "Content-length:".strlen($data)."\r\n";
  47. $out .= "Connection:close\r\n\r\n";
  48. $out .= "${data}";
  49. fputs($fp, $out);
  50. // get response
  51. $response = '';
  52. while($row=fread($fp, 4096)){
  53. $response .= $row;
  54. }
  55. fclose($fp);
  56. $pos = strpos($response, "\r\n\r\n");
  57. $response = substr($response, $pos+4);
  58. echo $response;
  59. ?>

fileapi.php

[php] view plaincopy
  1. <?php
  2. define('UPLOAD_PATH', dirname(__FILE__).'/upload');
  3. $name = $_POST['name'];
  4. $gender = $_POST['gender'];
  5. $filename = time().'.jpg';
  6. echo 'name='.$name.'<br>';
  7. echo 'gender='.$gender.'<br>';
  8. if(move_uploaded_file($_FILES['photo']['tmp_name'], UPLOAD_PATH.'/'.$filename)){
  9. echo '<img src="upload/'.$filename.'">';
  10. }
  11. ?>

源码下载地址:点击下载

php 利用fsockopen GET/POST 提交表单及上传文件相关推荐

  1. Qt——记录:http表单格式上传文件到七牛云和阿里云

    环境:windows10 版本:Qt 5.15.2 工具:Qt Creator 背景:通过http表单格式上传文件,兼容阿里云和七牛云. 一.记录问题:上传文件到阿里云 问题1:ErrorCode: ...

  2. Android Okhttp3的使用(很全面,包含Post提交字符串、键值对、表单、上传文件、无参请求和Get有参无参请求,还有自动添加token)

    Okhttp简介 okhttp是现代化应用程序的网络通信的方式.它用来帮助程序交换数据和媒体信息,使用okhttp可以让你的程序加载物料(翻译为服务器数据更合适在)更加高效.更节省网络带宽. okht ...

  3. ajax 提交form表单,上传文件

    参考 :https://blog.csdn.net/gu_wen_jie/article/details/72177714 注意:使用layui 按钮提交表单时,按钮会默认提交表单.解决如下: $(' ...

  4. java form 上传文件_JAVA入门[16]-form表单,上传文件

    一.如何传递参数 @RequestMapping("/detail") public String detail(@RequestParam("id") int ...

  5. JAVA入门[16]-form表单,上传文件

    一.如何传递参数 使用 @RequestParam 可以传递查询参数.例如:http://localhost:8092/category/detail?id=1 1 2 3 4 5 6 7 8 9 @ ...

  6. 前端实现axios以表单方式上传文件,优化上传速度

    一.背景 最近在开发过程中,遇到的需要是需要上传高清图片,必须原图上传.由于在移动端应用,上传网络问题有很大的坑.当初的方案是直接采用将文件转化为base64,再进行上传,由于文件转化为base64后 ...

  7. 利用前端form表单的上传文件来发送邮箱附件

    前端代码 <body> <form action="http://localhost:8080/email/form" method="post&quo ...

  8. linux编码 form表单,Linux以form表单形式上传文件讲解

    先cd到要上传文件的目录下: root@iZ2zee1przeygbuu4rkwvxZ:/usr/local/test# ls 1.png DSC_0192.JPG test.apk 使用curl - ...

  9. python post 上传文件_如何在 Python 中模拟 post 表单来上传文件

    展开全部 发个以前用urllib2模块来做的62616964757a686964616fe4b893e5b19e31333335343366class HTTPError(urllib2.HTTPDe ...

最新文章

  1. migration vmware vms to openstack kvm 修改vmware windows scsi to ide
  2. java切面1.6需要的包_Java技术 AspectJ
  3. word里双横线怎么打_美人计 | 精致打工人秀智,教你内双怎么化
  4. 计算机窗口预览图,window_Win7系统资源管理器加上预览窗格功能的方法,  图片缩略图是否太小?PPT - phpStudy...
  5. 使用libbpf-bootstrap构建BPF应用程序
  6. SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)
  7. android开发实践之1:安装部署环境设置
  8. 一个按钮控制暂停和开始java_《第一炉香》|一个女人的自甘堕落,从控制不住欲望开始...
  9. linux如何共享网络打印机,Ubunt如何安装网络打印机的详细图文步骤
  10. LaTeX里插入数学公式
  11. Box2D 的 PTM_RATIO
  12. 罗技 k380快捷键
  13. 北大韦神等十人获奖,均分1000万元,达摩院2021青橙奖出炉
  14. Net-snmp添加子代理示例
  15. java基于ssm框架的企业人事管理系统企业工资考勤系统
  16. VM(虚拟机)Ubuntu打不开
  17. 无人驾驶小车调试笔记(七)-- 相机校准
  18. GeneXus学习笔记——入门篇
  19. 【20保研】中国科学技术大学2019年第二届大学生大数据夏令营通知
  20. 服务器合租与虚拟主机的区别

热门文章

  1. 有序数组中查找数字的范围
  2. C++输入/输出文件
  3. 经典C语言程序100例之九七
  4. jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)
  5. 4.有关日期格式属性修改常识,v$nls_parameters,between and,查询指定部门的员工信息,in和null,like模糊查询,order by后面可以跟:列名、表达式、别名、序号
  6. Java 判断操作系统类型(适用于各种操作系统)
  7. inverse和Cascade详解
  8. 基于ZF网络的Faster RCNN网络结构详解(非常详细版)
  9. windows下VS2015配置caffe
  10. caffe基础(8):draw_net.py绘制网络结构