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中$_SERVER的详细参数与说明
Jul 29 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
8个出色的WordPress SEO插件收集
Feb 26 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php准确获取文件MIME类型的方法
Jun 17 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
[原创]php实现数组按拼音顺序排序的方法
May 03 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
解决Laravel5.5下的toArray问题
Oct 15 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JSONP基础知识详解
2017/03/19 Javascript
angular4自定义组件详解
2017/09/28 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
全面分析Python的优点和缺点
2018/02/07 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
金鑫耀Java笔试题
2014/09/06 面试题
有针对性的求职自荐信
2013/11/14 职场文书
技校生自我鉴定
2013/12/08 职场文书
经销商培训邀请函
2014/01/21 职场文书
环保建议书500字
2014/05/14 职场文书
小学教师师德承诺书
2014/05/23 职场文书
环保标语口号
2014/06/13 职场文书
员工离职感谢信
2015/01/22 职场文书
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技