PHP实现上传图片到 zimg 服务器


Posted in PHP onOctober 19, 2016

最近我们项目需要一台图片服务器存储用户头像,我们使用 zimg 处理和存储图片,下面简单介绍一下如何使用 PHP 上传图片到 zimg,并获取相应图片的返回信息

使用 curl 库实现上传

根据 zimg 使用文档,我们想要让 zimg 返回 json 信息,就必须 raw_post 上传图片,下面是演示代码

$upload_url = 'http://192.168.0.99:5000/upload';

$image_file = './test.jpg';

// 获取图片后缀
$value = explode(".", $image_file);
$extension = strtolower(array_pop($value));

// 生成本地临时存储路径,并生成相应文件夹
$dir = 'aurthur';
$save_path = 'uploads/'.$dir.'/'.date('Y').'/'.date('md').'/';
$save_rule = md5(uniqid(mt_rand(), true));
if(!is_dir($save_path)){
  if(false === mkdir($save_path, 0700, true)){
    exit('创建文件夹失败');
  }
}
$save_image_file = $save_path.$save_rule.".$extension";

// 把图片存储到临时路径
file_put_contents($save_image_file, file_get_contents($image_file));

// 获取临时保存的图片的真实地址(绝对路径)
$realpath = realpath($save_image_file);

// 上传图片到 zimg 图片存储服务
$ch = curl_init();

// 将图片内容读取到变量 $post_data ;
$post_data = file_get_contents($realpath);

$headers = array();
// 一定要添加此 header
$headers[] = 'Content-Type:'.$extension;

curl_setopt($ch, CURLOPT_URL, $upload_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);// raw_post方式

$info = curl_exec($ch);
curl_close($ch);

$json = json_decode($info, true);
$signature = $json['info']['md5'];
echo $signature;

如果想测试代码的话,请把上面的uploadurl改成你自己的zimg服务器地址,并把image_file 改成你需要上传的图片的路径

PHP 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
一个PHP分页类的代码
May 18 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
php截取字符串函数分享
Feb 02 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
PHP小白必须要知道的php基础知识(超实用)
Oct 10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
laravel 配置路由 api和web定义的路由的区别详解
Sep 03 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
php通过会话控制实现身份验证实例
Oct 18 #PHP
利用php_imagick实现复古效果的方法
Oct 18 #PHP
php封装的page分页类完整实例
Oct 18 #PHP
php封装的单文件(图片)上传类完整实例
Oct 18 #PHP
Thinkphp实现短信验证注册功能
Oct 18 #PHP
php基于单例模式封装mysql类完整实例
Oct 18 #PHP
php封装的mysqli类完整实例
Oct 18 #PHP
You might like
多php服务器实现多session并发运行
2006/10/09 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP中常用的转义函数
2014/02/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
JavaScript效率调优经验
2009/06/04 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
利用python实现命令行有道词典的方法示例
2017/01/31 Python
使用python实现个性化词云的方法
2017/06/16 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
python中树与树的表示知识点总结
2019/09/14 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
教师研修随笔感言
2014/01/23 职场文书
四风问题查摆材料
2014/08/25 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
开除通知书范本
2015/04/25 职场文书
鲁滨孙漂流记读书笔记
2015/06/30 职场文书
python基础学习之递归函数知识总结
2021/05/26 Python
Python预测分词的实现
2021/06/18 Python
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL