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 相关文章推荐
PHP编程网上资源导航
Oct 09 PHP
怎样在UNIX系统下安装MySQL
Oct 09 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
PHP实现获取中英文首字母
Jun 19 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php限制文件下载速度的代码
Oct 20 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 PHP
PHP架构及原理知识点详解
Dec 22 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使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
Python字符串格式化输出方法分析
2016/04/13 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
python中os.remove()用法及注意事项
2021/01/31 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
校园之声广播稿
2014/01/31 职场文书
员工拓展培训方案
2014/02/15 职场文书
财务总监岗位职责
2014/03/07 职场文书
入党积极分子考察意见
2015/06/02 职场文书
教师反邪教心得体会
2016/01/15 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
tomcat下部署jenkins的方法
2022/05/06 Servers
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang