java 图片保存到xml_获取微信XML格式中传来的图片并保存到本地
发布日期:2021-06-24 13:53:37 浏览次数:2 分类:技术文章

本文共 1362 字,大约阅读时间需要 4 分钟。

微信开启防外链后,一种方法是绕开外链,另一种方法自然是将图片保存到本地,在取的时候从本地去获取图片,那么如何从微信返回的XML格式中获取到图片的地址并且下载保存呢,代码如下:

protected function work(){

$xml = simplexml_load_string($image_message['content'], 'SimpleXMLElement', LIBXML_NOCDATA);

$content = json_decode(json_encode((array)$xml), TRUE);//微信的XML转成数组格式这个没什么好说的

$wechat_img_url = $content['PicUrl'];//获取图片地址

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $wechat_img_url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_MAXREDIRS, 2);

$response= curl_exec($ch);

if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200'){

$img_type = @getimagesize($wechat_img_url);//getimagesize可以获取图片的格式

if($img_type["mime"] == "image/jpeg"){

$_filename = $image_message['id'].'.jpg';

}elseif($img_type["mime"] == "image/png"){

$_filename = $image_message['id'].'.png';

}else{

break;

}

$_savePath = realpath('.').'/images/message_inbox_image/old';

$this->ensurePath($_savePath);

$image_name = $_savePath.'/'.$_filename;

$fp2=@fopen($image_name, "a");

fwrite($fp2,$response);

fclose($fp2);

}else{

$image_name = "";

}

curl_close($ch);

}

public function ensurePath($path) {

str_replace('\\', '/', $path);

$dirArray = explode('/', $path);

$dirString = '';

foreach ($dirArray as $dirName) {

$dirString .= $dirName . '/';

@mkdir($dirString);

}

return;

}

转载地址:https://blog.csdn.net/weixin_33272631/article/details/114572559 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java怎么加载主类_Java编写过程中遇到无法加载主类该怎么解决?
下一篇:java swing 等待框_〔Java〕待选框Swing

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月02日 22时05分42秒