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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
php getsiteurl()函数
Sep 05 PHP
PHP取进制余数函数代码
Jan 19 PHP
php学习笔记之面向对象编程
Dec 29 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
PHP实现的json类实例
Jul 28 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
asp函数split()对应php函数explode()
Feb 27 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
详解vue-cli官方脚手架配置
2018/07/20 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python3.6正式版新特性预览
2016/12/15 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python程序变成软件的实操方法
2019/06/24 Python
Django中提示消息messages的设置方式
2019/11/15 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
法律工作求职自荐信
2013/10/31 职场文书
机关作风建设工作总结
2014/10/23 职场文书
高中团支书竞选稿
2015/11/21 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书