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 编程请选择正确的文本编辑软件
Dec 21 PHP
PHP nl2br函数 将换行字符转成 <br>
Aug 21 PHP
php分页思路以及在ZF中的使用
May 30 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
php不写闭合标签的好处
Mar 04 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
php随机抽奖实例分析
Mar 04 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
ThinkPHP5框架缓存查询操作分析
May 30 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 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
第六节 访问属性和方法 [6]
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
PHP7 其他修改
2021/03/09 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
原生JavaScript实现进度条
2021/02/19 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python二进制文件的转译详解
2019/07/03 Python
Python3列表List入门知识附实例
2020/02/09 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
小学毕业感言150字
2014/02/05 职场文书
创业培训计划书
2014/05/03 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
Nginx快速入门教程
2021/03/31 Servers