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数组排序之sort、asort与ksort用法实例
Sep 08 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
php中的依赖注入实例详解
Aug 14 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
Python函数返回值实例分析
2015/06/08 Python
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python实现备份目录的方法
2015/08/03 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python机器学习库常用汇总
2017/11/15 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
Numpy 多维数据数组的实现
2020/06/18 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
实习护理工作自我评价
2013/09/25 职场文书
初中地理教学反思
2014/01/11 职场文书
工程技术员岗位职责
2014/03/02 职场文书
奥利奥广告词
2014/03/20 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
导游词之桂林
2019/08/20 职场文书