>  기사  >  백엔드 개발  >  PHP는 zimg server_php 예제에 사진 업로드를 구현합니다.

PHP는 zimg server_php 예제에 사진 업로드를 구현합니다.

WBOY
WBOY원래의
2016-12-05 13:28:151447검색

최근 우리 프로젝트에서는 사용자 아바타를 저장하기 위해 사진 서버가 필요합니다. 우리는 zimg를 사용하여 사진을 처리하고 저장합니다. 다음은 PHP를 사용하여 zimg에 사진을 업로드하고 해당 사진의 반환 정보를 얻는 방법에 대한 간략한 소개입니다.

컬 라이브러리를 사용하여 업로드

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을 업로드해야 하는 이미지 경로로 변경하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.