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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
数据库查询记录php 多行多列显示
Aug 15 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
PHP return语句的另一个作用
Jul 30 PHP
php bootstrap实现简单登录
Mar 08 PHP
PHP线程的内存回收问题
Jul 08 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 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
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
js实现div色块碰撞
2020/01/16 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python对象转JSON字符串的方法
2016/04/27 Python
python安装pil库方法及代码
2019/06/25 Python
django迁移文件migrations的实现
2020/03/31 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
小学科学教学反思
2014/01/26 职场文书
党员个人总结自评
2015/02/14 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
python基于tkinter制作下班倒计时工具
2021/04/28 Python
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python