Download hình ảnh bằng cURL trong PHP

cURL là một công cụ dùng để kiểm tra kết nối tới URL và curl command thường dùng để truyền tải dữ liệu. Nó cung cấp nhiều giao thức khác nhau như HTTP, HTTPS, FPT, FPTS, SFTP… Khi sử dụng giao thức HTTP sẽ giúp cURL gửi một request thông qua các phương thức như GET, POST, PUT, DELETE…

Trong bài viết này Quách Quỳnh sẽ hướng dẫn bạn xây dựng chức năng download hình bằng cURL trong PHP một cách dễ dàng.

Tại thư mục htdocs bạn sẽ tạo ra một tập tin là getimg.php và thư mục photo

Trong getimg.php nội dung đoạn mã là:

<form method="post">
<input type="text" name="url"/>
<input type="submit" name="btn_submit">
</form>
<?php
if (isset($_POST['btn_submit'])) {
$url=$_POST['url'];
$ch = curl_init($url);
$dir = './photo/';
$file_name = basename($url);
$save_file_loc = $dir . $file_name;
$fp = fopen($save_file_loc, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
echo $result;
echo '<img src="./photo/'.$file_name.'">';
curl_close($ch);
fclose($fp);
}

?>

Sau khi paste một đường dẫn hình ảnh bất kỳ vào cURL sẽ thực hiện các bước:

  • Khởi tạo cURL
  • Thiết lập tùy chọn Request
  • Thực thi
  • Đóng Request và giải phóng tài nguyên

Gõ lên trình duyệt localhost/getimg.php (Nhớ phải bật phần mềm XAMPP lên nhé!)

Và tiếp theo mở thư mục photo xem ảnh đã lưu vào máy tính chưa.

curl-image-php

Download nhiều hình ảnh cùng một lúc trong PHP

<?php 
if(isset($_POST['submit_image']))
{
    $text = trim($_POST['images_url']);
    $textAr = explode("\n", $text);
    $textAr = array_filter($textAr, 'trim');

    foreach ($textAr as $url) {
        $data = file_get_contents($url);
        $new = 'name_'.rand(10, 3000).'.jpg';
        file_put_contents('photo/'.$new, $data);
        echo '<img src="photo/'.$new.'">'; 
    } 

} 
?>
 <form method="post" action="getcurl.php">
     <textarea name="images_url" placeholder="Mỗi url là một dòng"></textarea>
      <input type="submit" name="submit_image" value="Submit">
 </form>
Chuyên mục:

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *