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变量引用的面试题
Aug 08 PHP
PHP下常用正则表达式整理
Oct 26 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
Destoon实现多表查询示例
Aug 21 PHP
php中字符串和正则表达式详解
Oct 23 PHP
PHP实现返回JSON和XML的类分享
Jan 28 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 PHP
php微信开发之图片回复功能
Jun 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
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
Python函数装饰器实现方法详解
2018/12/22 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
当当网软件测试笔试题
2015/11/24 面试题
报关员个人职业生涯规划书
2014/03/12 职场文书
暑期教师培训方案
2014/06/07 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
党员作风建设整改方案
2014/10/27 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
政协工作总结2015
2015/05/20 职场文书