Maison >développement back-end >tutoriel php >Méthode PHP pour implémenter le téléchargement d'images sur le serveur zimg

Méthode PHP pour implémenter le téléchargement d'images sur le serveur zimg

墨辰丷
墨辰丷original
2018-05-31 14:15:091902parcourir

zimg est un service de stockage d'images avec fonction de traitement d'image. Vous pouvez télécharger des images sur le serveur zimg, puis obtenir les images traitées via l'URL avec des paramètres. Aujourd'hui, notre contenu principal consiste à utiliser php pour télécharger des images sur le zimg. serveur, j'espère que vous l'aimerez tous

Récemment, notre projet nécessite un serveur d'images pour stocker les avatars des utilisateurs. Nous utilisons zimg pour traiter et stocker les images. Voici une brève introduction sur la façon d'utiliser PHP pour télécharger des images. zimg et obtenez les images correspondantes. Retourner les informations

Utiliser la bibliothèque curl pour télécharger

Selon la documentation d'utilisation de zimg, si nous voulons que zimg renvoie les informations json, nous devons raw_post pour télécharger l'image. Voici le code de démonstration

$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;

Si vous souhaitez tester le code, veuillez modifier l'URL de téléchargement ci-dessus sur votre propre serveur zimg. adresse et remplacez image_file par ce que vous devez télécharger Le chemin de l'image

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

phpExplication détaillée des étapes pour explorer les données des produits Tmall et Taobao (avec code)

Explication détaillée des étapes pour construire un environnement de développement PHP avec Docker

phpRésumé des méthodes d'ouverture des fichiers de format

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn