PHP接收App端发送文件流的方法


Posted in PHP onSeptember 23, 2016

本文实例讲述了PHP接收App端发送文件流的方法。分享给大家供大家参考,具体如下:

解决思路:

1. 客户端多张图片进行循环上传,同时附带参数,并用一定规则组合生产数据流(图片数据放在最后)
2. 使用数据流进行传输,php服务端用file_get_content('php://input')进行接收
3. 传输完毕后将数据流按照规则分割,取出最后的图片数据,并写入图片文件

示例代码:

以下代码是发送单张图片和参数PHP文件,多张图片可循环调用。

<?php
/* curl_post.php */
// 设置请求的POST地址,必须是包含网址的域名,不能是相对路径
$url = 'http://www.xxx.com/post.php';
$pic_data = file_get_contents('./me.jpg');
$data = [
  'username=chafang_'.rand(100, 999),
  'password='.md5('123456'),
  'pic=' => $pic_data, // 这里存放图片数据
];
// 使用 '#####' 进行分割数组
$strData = implode('#####', $data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 0);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $strData);
$data = curl_exec($curl);
curl_close($curl);
// 显示post的返回值
echo ($data);

接收curl请求的PHP文件,返回json格式

<?php
/* post.php */
$content = file_get_contents("php://input");
$domain = 'http://www.xxx.com/';
// 注意这里需要有写权限
$filename = 'update/'.time().'_'.rand(100000, 999999).'.jpg';
$data = explode('#####', $content, 3);
$count = count($data);
$result = [];
// 如果文件写入成功
if (file_put_contents($filename, $data[$count - 1]))
{
  // 删除数据中最后一个元素(就是图片)
  unset($data[$count - 1]);
  foreach ($data as $val)
  {
    // 返回参数,且参数值不能存在 '=' 号
    $tmp = explode('=', $val, 2);
    $result[$tmp[0]] = $tmp[1];
  }
  // 组合图片访问地址
  $result['pic'] = $domain.$filename;
}
echo json_encode($result);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
php用正则表达式匹配中文实例详解
Nov 06 PHP
浅谈php扩展imagick
Jun 02 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
适合PHP初学者阅读的4本经典书籍
Sep 23 #PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
Sep 23 #PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 #PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 #PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 #PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 #PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 #PHP
You might like
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
Django中的ajax请求
2018/10/19 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python super的使用方法及实例详解
2019/09/25 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
python 实现按对象传值
2019/12/26 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
python上selenium的弹框操作实现
2020/07/13 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
旅游管理本科生求职信
2013/10/14 职场文书
日语翻译个人求职的自我评价
2013/10/14 职场文书
仓管员岗位职责范文
2013/11/08 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis