検索
ホームページphp教程php手册使用php://input接收数据流(还有多个参数的解决办法)

使用php://input接收数据流(还有多个参数的解决办法)

Jun 06, 2016 pm 07:44 PM
inputphp使用パラメータ複数引き継ぐデータフロー

最近的工作中接触到一个手机上传图片到服务器的小程序,刚开始一直在想该用怎样的方式去接收数据,最后在网上看到大家都用php://input来接收。就去查了下php://input的官方介绍,确实可以,除了在enctype= multipart/form-data 情况下,是无法接收到流的,其

最近的工作中接触到一个手机上传图片到服务器的小程序,刚开始一直在想该用怎样的方式去接收数据,最后在网上看到大家都用php://input来接收。就去查了下php://input的官方介绍,确实可以,除了在enctype="multipart/form-data"情况下,是无法接收到流的,其他情况下都可以。既然这个可以,我就在本地先写个测试文件

上传文件
  //@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;
}
?>

接收文件
/**
 *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代码了。我上面模拟的上传就需要根据客户端来相应构造了,我后面也和客户端对接上了。所以是可以用的,还有就是客户端上传的时候可能会一些数据问题,因为我们在这个过程中出现了各种状况。


今天公司要求用APP发送一个图片到PHP程序接收并保存起来,而且中间还需要很多参数!
以前没有做过APP和PHP交互,这次算是一个挑战吧(对一个没有人指导实习生来说)

1.APP发1.jpg,而且带有两个参数一个是假设是X和另外一个假设是Y
2.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);
}
^_^,看看/var/www/目录下是不是生成了一个图片?

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール