2

I want be able to upload an image or just paste the URL of an image in order to upload it a sa profile picture for my website users.

the point is i dont wanna store the url but i want to have a copy of that image on my server because if that external image will be lost i dont want to lose it either...

i believe facebook and tumblr etc do so... what the php script or best practice to do that?

thanks!

Francesco
  • 24,839
  • 29
  • 105
  • 152

4 Answers4

2

You can get the contents (bytes) from the image using the PHP function (http://php.net/manual/en/function.file-get-contents.php)

$contents = file_get_contents('http://www.google.com/images/logos/ps_logo2.png');

You can use CURL library as well... Here's an example of how you can downloadImageFromUrl with and save it in a local SaveLocation

function downloadImageFromUrl($imageLinkURL, $saveLocationPath) {
   $channel = curl_init();
   $curl_setopt($channel, CURLOPT_URL, $imageLinkURL);
   $curl_setopt($channel, CURLOPT_POST, 0);
   $curl_setopt($channel, CURLOPT_RETURNTRANSFER, 1);
   $fileBytes = curl_exec($channel); 
   curl_close($channel);

   $fileWritter = fopen($saveLocationPath, 'w');
   fwrite($fileWritter, $fileBytes);
   fclose($fileWritter); 
}

You can use this as follows:

downloadImageFromUrl("http://www.google.com/images/logos/ps_logo2.png", "/tmp/ps_logo2.png")

You can also get the same name of the image by parsing the URL as well...

Marcello DeSales
  • 21,361
  • 14
  • 77
  • 80
0

I think this is you are looking for: Copy Image from Remote Server Over HTTP

Community
  • 1
  • 1
morgar
  • 2,339
  • 17
  • 16
0

You can use a function called imagecreatefromjpeg or something. It takes a URL path to the image and creates a new image off of that. Have a look at http://php.net/manual/en/function.imagecreatefromjpeg.php

There's different functions for different extensions, though (if you prefer using such). You may need to check for the image extension from the URL and use the appropriate function I suppose.

tradyblix
  • 7,439
  • 3
  • 25
  • 29
0

Handling uploads is covered in this documentation, and if users paste a URL, I'd recommend using file_get_contents to save a copy of the image to your server, and then you can simply store the path to that image, rather than the external image.

Jimmy Sawczuk
  • 13,488
  • 7
  • 46
  • 60