首頁 >後端開發 >php教程 >如何在PHP中使用cURL有效率地下載和保存圖片?

如何在PHP中使用cURL有效率地下載和保存圖片?

Linda Hamilton
Linda Hamilton原創
2024-12-01 02:23:13857瀏覽

How Can I Efficiently Download and Save Images Using cURL in PHP?

透過 CURL PHP 下載影像檔案

要從 URL 取得和儲存影像文件,CURL PHP 提供了一個方便的解決方案。但是,某些編碼問題可能會阻礙您的嘗試。讓我們來分析這段程式碼:

function GetImageFromUrl($link)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_URL, $link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$sourcecode = GetImageFromUrl($iticon);
$savefile = fopen(' /img/uploads/' . $iconfilename, 'w');
fwrite($savefile, $sourcecode);
fclose($savefile);

問題和解決方案:

  1. 不正確的檔案路徑:

    • 檔案保存語句路徑中錯誤地包含空格 (' ')。將其替換為:

      $savefile = fopen('img/uploads/' . $iconfilename, 'w');
  2. 缺少的功能:

    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  3. 覆蓋現有文件:

    覆蓋現有文件:
    • 覆蓋現有文件:
      if (file_exists($savefile)) {
        unlink($savefile);
      }
  4. 覆蓋現有文件:

程式碼會覆寫任何現有的同名檔案。為了避免這種情況,請使用:
function grab_image($url, $saveto) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $raw = curl_exec($ch);
    curl_close($ch);
    if (file_exists($saveto)) {
        unlink($saveto);
    }
    $fp = fopen($saveto, 'x');
    fwrite($fp, $raw);
    fclose($fp);
}

最佳化程式碼:最佳化程式碼:最佳化程式碼:最佳化程式碼:最佳程式碼>附加說明:在你的PHP設定檔中(php.ini),確保啟用了allow_url_fopen。

以上是如何在PHP中使用cURL有效率地下載和保存圖片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn