php保存遠程圖片問題及解決方案
在PHP開發中,保存遠程圖片經常遇到保存成功但無法打開的情況。本文將通過代碼示例分析問題原因并提供解決方案。
問題描述:
以下PHP代碼意圖將遠程圖片保存到本地:
$url = 'https://img.alicdn.com/i3/85764793/o1cn0128vx5s1lhfa4aj2ym_!!85764793.jpg'; file_put_contents('aaa.jpg', $url);
運行后,aaa.jpg文件雖然創建成功,但無法正常打開,而原鏈接卻可以正常訪問圖片。
立即學習“PHP免費學習筆記(深入)”;
問題分析:
問題在于file_put_contents()函數直接將URL字符串寫入文件,而非圖片數據本身。因此,文件內容是URL文本而非圖片二進制數據。
解決方案:
正確的做法是先使用file_get_contents()獲取圖片的二進制數據,再寫入文件。修改后的代碼如下:
<?php $url = 'https://img.alicdn.com/i3/85764793/O1CN0128vX5s1lHFA4aj2YM_!!85764793.jpg'; $imageData = file_get_contents($url); file_put_contents('aaa.jpg', $imageData); ?>
此代碼先用file_get_contents($url)獲取圖片數據,再用file_put_contents(‘aaa.jpg’, $imageData)將數據寫入文件。這樣,aaa.jpg文件將包含正確的圖片二進制數據,從而可以正常打開。 需要注意的是,遠程服務器可能存在訪問限制或圖片不存在的情況,需要進行相應的錯誤處理。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END