这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
zimg 是一个具有图片处理功能的图片存储服务, 你可以上传图片到 zimg 服务器, 然后通过带有参数的 URL 来获取被处理过的图片,今天我们的主要内容是使用 php 实现图片上传到 zimg 服务器上,希望大家能够喜欢
最近我们项目需要一台图片服务器存储用户头像,我们使用 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 改成你需要上传的图片的路径
来源: http://www.phperz.com/article/17/0810/341842.html