The code presented in this page can be used to save / copy images on server from external URL address.

- Important: If you work on Linux system, PHP must have CHMOD write permisions in the directory in which the image file will be saved.
<?php
// function to get content from a URL address, with cURL
// returns the content of the page with the address pased to $url parameter
function getContentUrl($url) {
 // https://coursesweb.net/php-mysql/
  // Seting options for cURL
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
  curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/21.0 (compatible; MSIE 8.01; Windows NT 5.0)');
  curl_setopt($ch, CURLOPT_TIMEOUT, 200);
  curl_setopt($ch, CURLOPT_AUTOREFERER, false);
  curl_setopt($ch, CURLOPT_REFERER, 'http://google.com');
  curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);    // Follows redirect responses

  // gets the file content, trigger error if false
  $file = curl_exec($ch);
  if($file === false) trigger_error(curl_error($ch));

  curl_close ($ch);
  return $file;
}

$src = 'https://marplo.net/imgs/webcourses.gif';       // Image address
$dirimg = 'imgs/';            // directory in which the image will be saved
$localfile = $dirimg. basename($src);         // set image name the same as the file name of the source

// create the file with the image on the server
file_put_contents($localfile, getContentUrl($src));

// Test, show the saved image
echo '<img src="'. $localfile .'" />';
?>
If the image file already exists on server, in the directory from $dirimg, the file will be replaced with the new image.
If you want to not replace the old file, but to save the image with another name, replace this line:
file_put_contents($localfile, getContentUrl($src));
With this code:
// receives the file address, passed by refference
function setLocalfile(&$localfile) {
  GLOBAL $dirimg;
  $imgnm = basename($localfile);      // gets the file name
  preg_match('/^[0-9]*/i', $imgnm, $nrimg);      // gets the number from beginning of file name
  if($nrimg[0] === '') $imgnm = '0_'. $imgnm;   // if no number, sets 0
  else $imgnm = str_replace($nrimg[0], $nrimg[0] + 1, $imgnm);       // replace the number with next one
  $localfile = $dirimg. $imgnm;        // sets the new name, passed by refference to $localfile
  if(file_exists($dirimg. $imgnm)) setLocalfile($localfile);        // calls the function to set another name
}

// if the file exists in $dirimg, calls setLocalfile() to set a new file name
if(file_exists($localfile)) setLocalfile($localfile);

// create the file with the image on the server
file_put_contents($localfile, getContentUrl($src));
- This code, the setLocalfile() function sets a new name with a consecutive number at the beginning of the file name (image.png, 0_image.png, 1_image.png, ...).

- The getContentUrl() can also be used to get the page content of an URL address.

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag defines the clickable areas inside the image map?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Which CSS property defines what is done if the content in a box is too big for its defined space?
display overflow position
#id {
  overflow: auto;
}
Click on the event which is triggered when the mouse is positioned over an object.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Have Good Life");
}
Indicate the PHP variable that contains data added in URL address after the "?" character.
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Save image on server from external URL

Last accessed pages

  1. querySelector and querySelectorAll (7192)
  2. Creating objects in ActionScript (7299)
  3. Display data from PHP Array, or MySQL in HTML table (13982)
  4. SHA1 Encrypt data in JavaScript (8773)
  5. Validate radio and checkbox buttons (5570)

Popular pages this month

  1. Read Excel file data in PHP - PhpExcelReader (663)
  2. PhpSpreadsheet - Read, Write Excel and LibreOffice Calc files (552)
  3. Insert, Select and Update NULL value in MySQL (418)
  4. Get Attribute (ID, Class, Name, Title, Src) with jQuery (393)
  5. PHP getElementById and getElementsByTagName (374)