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的bbs设计(五)
Oct 09 PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
php strcmp使用说明
Apr 22 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
php实现异步数据调用的方法
Dec 24 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 PHP
Yii redis集合的基本使用教程
Jun 14 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
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
python实现SOM算法
2018/02/23 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
如何用Python绘制3D柱形图
2020/09/16 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
护士见习期自我鉴定
2014/02/08 职场文书
竞赛口号大全
2014/06/16 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
白酒代理协议书范本
2014/10/26 职场文书
运动会观后感
2015/06/09 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript