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

 更新时间:2016年09月23日 14:38:19   作者:山猫的博客  
这篇文章主要介绍了PHP接收App端发送文件流的方法,涉及php基于curl的文件传输操作相关技巧,需要的朋友可以参考下

本文实例讲述了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 curl用法总结》、《php文件操作总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总

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

相关文章

  • 24条货真价实的PHP代码优化技巧

    24条货真价实的PHP代码优化技巧

    这篇文章主要为大家分享了24条货真价实的PHP代码优化技巧,帮助大家更好的进行PHP项目开发,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • php支付宝接口用法分析

    php支付宝接口用法分析

    这篇文章主要介绍了php支付宝接口用法,以实例形式较为详细的分析了php支付宝接口的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • 在字符串指定位置插入一段字符串的php代码

    在字符串指定位置插入一段字符串的php代码

    在字符串指定位置插入一段字符串
    2010-02-02
  • 浅谈thinkphp的实例化模型

    浅谈thinkphp的实例化模型

    这篇文章主要简单介绍了thinkphp的实例化模型的几种方法,以及他们之间的使用要点,非常不错,推荐给大家。
    2015-01-01
  • PHP中PCRE正则解析代码详解

    PHP中PCRE正则解析代码详解

    在本篇文章里小编给大家分享了关于PHP中PCRE正则解析的相关知识点内容,需要的朋友们学习下。
    2019-04-04
  • PHP实现重载的常用方法实例详解

    PHP实现重载的常用方法实例详解

    这篇文章主要介绍了PHP实现重载的常用方法,结合实例形式对比java分析了php实现重载的四种常见实现技巧,需要的朋友可以参考下
    2017-10-10
  • PHP 快速排序算法详解

    PHP 快速排序算法详解

    其实快速排序之所以称之快速,就是因为,冒泡排序是每次对比只交换相邻的两个值的位置,这样每个值要移动到它最终的排序结果中所对应的位置,可能需要很多次位置的变化。但是快速排序可在一次划分中,就确定你选定的那个对比值在最终排序好的队列中的位置。
    2014-11-11
  • 详解PHP错误日志的获取方法

    详解PHP错误日志的获取方法

    在php中我们会经常碰到一些错误要去处理,下面我来总结php中的错误报告及日志的获取方法等方面的内容做一些总结,需要的朋友可以参考下。
    2015-07-07
  • 学习php设计模式 php实现建造者模式

    学习php设计模式 php实现建造者模式

    这篇文章主要介绍了php设计模式中的建造者模式,使用php实现建造者模式,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • php7下安装event扩展方法

    php7下安装event扩展方法

    下面小编就为大家分享一篇php7下安装event扩展方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03

最新评论