使用php://input接收数据流(还有多个参数的解决办法)
来源:互联网 发布:帝国cms tags自动生成 编辑:程序博客网 时间:2024/06/15 03:54
最近的工作中接触到一个手机上传图片到服务器的小程序,刚开始一直在想该用怎样的方式去接收数据,最后在网上看到大家都用php://input来接收。就去查了下php://input的官方介绍,确实可以,除了在enctype="multipart/form-data"情况下,是无法接收到流的,其他情况下都可以。既然这个可以,我就在本地先写个测试文件上传文件 <?php//@file phpinput_post.php$data=file_get_contents('btn.png');$http_entity_body = $data;$http_entity_type = 'application/x-www-form-urlencoded';$http_entity_length = strlen($http_entity_body);$host = '127.0.0.1';$port = 80;$path = '/image.php';$fp = fsockopen($host, $port, $error_no, $error_desc, 30);if ($fp) { fputs($fp, "POST {$path} HTTP/1.1\r\n"); fputs($fp, "Host: {$host}\r\n"); fputs($fp, "Content-Type: {$http_entity_type}\r\n"); fputs($fp, "Content-Length: {$http_entity_length}\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $http_entity_body . "\r\n\r\n"); while (!feof($fp)) { $d .= fgets($fp, 4096); } fclose($fp); echo $d;}?>接收文件<?php/** *Recieve image data**/error_reporting(E_ALL);function get_contents() { $xmlstr= file_get_contents("php://input"); $filename=time().'.png'; if(file_put_contents($filename,$xmlstr)){ echo 'success'; }else{ echo 'failed'; }}get_contents();?>运行test.php你就可以看到相应的结果,成功了,也在相应目录下看到了我刚才上传的文件。如果你做服务端,就只需要接收文件里面的php代码了。我上面模拟的上传就需要根据客户端来相应构造了,我后面也和客户端对接上了。所以是可以用的,还有就是客户端上传的时候可能会一些数据问题,因为我们在这个过程中出现了各种状况。下文转自:http://www.0377joyous.com/archives/1135.html今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数!以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说)1.APP发1.jpg,而且带有两个参数一个是假设是X和另外一个假设是Y2.PHP负责接受X,Y和1.jpg,并且还要保存1.jpg到服务器步骤:1.PHP页面代码$data = file_get_contents(‘php://input’);//这样可以获取到未经处理的原数据(保持发送的图片流不被破坏),在APP上使用X#Y#图片流使用http发送到PHP页面//然后PHP页面进行数据处理和分割2.数据处理先分割数据流$vars = explode(“#”,$data,3);//这样防止对图片流造成破坏只分割成三份即可/*省去若干代码*/$img = $vars[2];$path = ‘/var/www/uploads/’;$newfilename = time().”.jpg”;$file = $path.$newfilename;$handle = fopen($file, “w”);if ($handle) {fwrite($handle,$img);fclose($handle);}
0 0
- 使用php://input接收数据流(还有多个参数的解决办法)
- 使用php://input接收数据流(还有多个参数的解决办法)
- 使用php://input接收数据流(还有多个参数的解决办法)
- php接收数据流
- 接收多个参数
- 关于用sql语句select多个字段,该使用什么接收的解决办法
- 关于librtmp接收数据(接收网络电视的数据流)
- ibatis接收多个参数
- 多个参数如何接收
- @PathVariable参数接收不完整的解决办法
- ajax前台怎么接收后台的多个参数
- 不一样的方式实现performSelector接收多个参数
- SpringMVC 接收多个checkbox提交参数的问题
- spring接收json格式的多个对象参数
- 使用php://input接收手机图片上传二进制流
- 使用php://input接收手机图片上传二进制流
- C#直接接收Post参数(用数据流)
- TP5 接收表单参数 input
- 如何使用云桌面系统提高涉密网络安全性与方便性
- iOS 地图的简单应用
- 悟空学Linux专栏----第21篇
- [转载]如何高效、轻松地利用一天?
- c语言ASCII码表详解(一)
- 使用php://input接收数据流(还有多个参数的解决办法)
- Pro Android学习笔记(二)——ContentProvider(下)
- 每天一个linux命令(42):kill命令
- PAT 数据结构 02-线性结构4. Pop Sequence (25)
- SQL常用函数
- ogre 欧拉角四元数之间的转换
- 悟空学Linux专栏----第22篇
- 每天一个linux命令(43):killall命令
- python inconsistent dedent(不一致的缩进)