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程序设计有所帮助。

相关文章

  • php实现二进制和文本相互转换的方法

    php实现二进制和文本相互转换的方法

    这篇文章主要介绍了php实现二进制和文本相互转换的方法,实例分析了文本与数制转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • php生成不重复随机数、数组的4种方法分享

    php生成不重复随机数、数组的4种方法分享

    这篇文章主要介绍了php生成不重复随机数、数组的4种方法分享,本文直接给出实现代码,并对生成效率做了对比,需要的朋友可以参考下
    2015-03-03
  • PHP实现的加密解密处理类

    PHP实现的加密解密处理类

    这篇文章主要介绍了PHP实现的加密解密处理类,结合实例形式分析了php加密解密类的定义与使用技巧,需要的朋友可以参考下
    2016-05-05
  • 利用PHP判断文件是否为图片的方法总结

    利用PHP判断文件是否为图片的方法总结

    最近在工作中遇到一个需要,要判断一个文件是否为图片的功能,通过查找相关的资料找到了几种方法,包括利用getimagesize函数获取图片信息,然后进行判断或读取图片的前2个字节等方法。下面来一起看看详细的介绍吧,需要的朋友可以参考下。
    2017-01-01
  • php 启动报错如何解决

    php 启动报错如何解决

    php 启动时报错的情况,想必很多朋友都有遇到过吧,下面是具体的解决方法
    2014-01-01
  • 什么是PHP文件?如何打开PHP文件?

    什么是PHP文件?如何打开PHP文件?

    什么是PHP文件?如何打开PHP文件?这篇文章主要为大家详细介绍了解php文件以及如何打开php文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • PHP访问数据库集群的方法小结

    PHP访问数据库集群的方法小结

    这篇文章主要介绍了PHP访问数据库集群的方法,结合实例形式总结分析了三种常见的PHP访问数据库集群的技巧,需要的朋友可以参考下
    2016-03-03
  • PHP生成二维码与识别二维码的方法详解【附源码下载】

    PHP生成二维码与识别二维码的方法详解【附源码下载】

    这篇文章主要介绍了PHP生成二维码与识别二维码的方法,结合实例形式分析了php二维码相关概念、原理及生成、识别二维码相关操作技巧,并附带源码供读者下载参考,需要的朋友可以参考下
    2019-03-03
  • PHP基于phpqrcode类生成二维码的方法详解

    PHP基于phpqrcode类生成二维码的方法详解

    这篇文章主要介绍了PHP基于phpqrcode类生成二维码的方法,结合实例形式详细分析了phpqrcode类的具体功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-03-03
  • php+xml编程之SimpleXML的应用实例

    php+xml编程之SimpleXML的应用实例

    这篇文章主要介绍了php+xml编程之SimpleXML的应用,实例分析了SimpleXML函数操作XML文件的方法,需要的朋友可以参考下
    2015-01-01

最新评论