Cách download tệp về máy chủ từ URL bằng mã PHP

  Lập Trình, TIPS

Cách 1: Sử dụng hàm file_get_contents ()

<?php
  
    // Khởi tạo biến url và gán URL cho nó
    $url = 
    'https://mkbentre.com/wp-content/uploads/2021/12/DSC_0017-scaled.jpg';
      
    // Sử dụng hàm basename() để trả về tên gốc của tệp
    $file_name = basename($url);
      
    // Sử dụng hàm file_get_contents() để lấy nội dung tệp
    // từ url và sử dụng hàm file_put_contents() để
    // lưu tệp với tên gốc
    if (file_put_contents($file_name, file_get_contents($url)))
    {
        echo "File downloaded successfully";
    }
    else
    {
        echo "File downloading failed.";
    }
?>

Trước khi chạy mã:

Sau khi chạy mã:

Cách 2: Sử dụng CURL

<?php
  // Khởi tạo biến url và gán URL cho nó
  $url = 
  'https://mkbentre.com/wp-content/uploads/2021/12/DSC_0017-scaled.jpg';
  
  // Khởi tạo phiên cURL
  $ch = curl_init($url);
  
  // Khởi tạo nơi chứa file
  // file will be save
  $dir = './';
  
  // Sử dụng hàm basename() để trả về
  // tên ban đầu của file
  $file_name = basename($url);
  
  // Lưu file vào vị trí đã chỉ định ở trên
  $save_file_loc = $dir . $file_name;
  
  // Mở file
  $fp = fopen($save_file_loc, 'wb');
  
  // Nó đặt một tùy chọn để chuyển dữ liệu qua cURL
  curl_setopt($ch, CURLOPT_FILE, $fp);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  
  // Thực hiện một phiên cURL
  curl_exec($ch);
  
  // Đóng phiên cURL và giải phóng tất cả tài nguyên
  curl_close($ch);
  
  // Close file
  fclose($fp);
?>

Lưu ý khi sử dụng:

Để có thể hoạt động được bạn cần phải đáp ứng thời gian thực thi lệnh cho php, nghĩa là php phải thực hiện tải xong trước khi bị time out.
Và 1 điều nữa là nếu bạn sử dụng cách 1 bạn cần phải tăng biến upload của php lên. bạn có thể làm điều này bằng cách thêm đoạn mã sau vào file .htaccess, chỉnh sửa các thông số cho phù hợp với file của bạn nhé:

php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value max_execution_time 3000
php_value max_input_time 3000