Copy images from url to server, delete all images after
I have an affiliate link with a product image
http://www.myaffiliate.com/products/product.jpg
I want to copy the imagine to my website, in a folder called lets say products. It's hosted on shared sherver, not my pc. I think the php copy() does not work, well tried it and I think my hosts doen't support the method. How can I do it, curl maybe? Then, I need a php command to delete all the images from the products folder - I'll do this with a cronjob.
<?php
$table = 'cron';
$feed = 'myfeed';
$xml = simplexml_load_file($feed);
mysql_query("TRUNCATE TABLE ".$table."", $dbh1);
mysql_query("TRUNCATE TABLE ".$table."", $dbh2);
function getimg($url) {
$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
$user_agent = 'php';
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, $useragent);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
cu开发者_Python百科rl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
$return = curl_exec($process);
curl_close($process);
return $return;
}
foreach( $xml->performerinfo as $performerinfo )
{
$performerid = $performerinfo->performerid;
$category = $performerinfo->category;
$subcategory = $performerinfo->subcategory;
$bio = $performerinfo->bio;
$turnons = $performerinfo->turnons;
$willing = $performerinfo->willingness;
$willingness = str_replace(',', ', ', $willing);
$age = $performerinfo->age;
$build = $performerinfo->build;
$height = $performerinfo->height;
$weight = $performerinfo->weight;
$breastsize = $performerinfo->breastsize;
$haircolor = $performerinfo->haircolor;
$hairlength = $performerinfo->hairlength;
$eyecolor = $performerinfo->eyecolor;
$ethnicity = $performerinfo->ethnicity;
$sexpref = $performerinfo->sexpref;
$pic0 = $performerinfo->picture[0];
$pic1 = $performerinfo->picture[1];
$pic2 = $performerinfo->picture[2];
$pic3 = $performerinfo->picture[3];
$pic4 = $performerinfo->picture[4];
$test = $performerinfo->picture[0];
$imgurl = 'http://www.foodtest.ru/images/big_img/sausage_3.jpg';
$imagename= basename($imgurl);
if(file_exists('./tmp/'.$imagename)){continue;}
$image = getimg($imgurl);
file_put_contents('tmp/'.$imagename,$image);
}
//baracuda reloaded
mysql_query("TRUNCATE TABLE reloaded", $dbh1);
mysql_query("TRUNCATE TABLE reloaded", $dbh2);
mysql_query("INSERT INTO reloaded SELECT * FROM ".$table."", $dbh1);
mysql_query("INSERT INTO reloaded SELECT * FROM ".$table."", $dbh2);
?>
use file_get_contents or cURL in a loop
<?php
//loop with a list of images
loop{
$imgurl = 'url to image';
$imagename= basename($imgurl);
if(file_exists('./images_folder/'.$imagename)){continue;}
$image = file_get_contents($imgurl);
file_put_contents('images_folder/'.$imagename,$image);
}
?>
or cURL
<?php
//loop this
loop{
$imgurl = 'url to image';
$imagename= basename($imgurl);
if(file_exists('./images_folder/'.$imagename)){continue;}
$image = getimg($imgurl);
file_put_contents('images_folder/'.$imagename,$image);
}
?>
<?php
//cURL function (outside of loop) to get img
function getimg($url) {
$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
$user_agent = 'php';
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, $useragent);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
$return = curl_exec($process);
curl_close($process);
return $return;
}
?>
in a file on your server that you want deleted put this in it and call it at END of your loops once you got all the images
<?php
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
mkdir($dir);
}
}
rrmrir('./products');
?>
精彩评论