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 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
php保存信息到当前Session的方法
Mar 16 PHP
PHP中preg_match函数正则匹配的字符串长度问题
May 27 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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 !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
PHP进程通信基础之信号
2017/02/19 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
使用js 设置url参数
2013/07/08 Javascript
javascript实现简单的Map示例介绍
2013/12/23 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
2015/09/15 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
MIKI HOUSE美国官方网上商店:日本领先的婴儿和儿童高级时装品牌
2020/06/21 全球购物
一年级家长会邀请函
2014/01/25 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
2014年电工工作总结
2014/11/20 职场文书
开会通知短信大全
2015/04/20 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python