PHP的 – 复制图像到我的服务器直接从URL

可能重复:
使用PHP保存图像从PHPurl

我想要有以下的PHP代码。

假设我有一个图片url,例如http://www.google.co.in/intl/zh_CNhttp://img.dovov.comsrpr/logo1w.png

如果我运行一个脚本,这个图像将被复制并放在我的服务器内有777个权限的文件夹中。

可能吗? 如果是的话,你可以给同样的方向吗?

谢谢,

伊恩

两种方式,如果你使用PHP5

copy('http://www.google.co.in/intl/en_comhttp://img.dovov.comsrpr/logo1w.png', '/tmp/file.jpeg'); 

如果不是,则使用file_get_contents

 //Get the file $content = file_get_contents("http://www.google.co.in/intl/en_comhttp://img.dovov.comsrpr/logo1w.png"); //Store in the filesystem. $fp = fopen("/location/to/save/image.jpg", "w"); fwrite($fp, $content); fclose($fp); 

从这个SOpost

从URL复制图像到服务器,之后删除所有图像

 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, $user_agent); //check here 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; } $imgurl = 'http://www.foodtest.ruhttp://img.dovov.combig_img/sausage_3.jpg'; $imagename= basename($imgurl); if(file_exists('./tmp/'.$imagename)){continue;} $image = getimg($imgurl); file_put_contents('tmp/'.$imagename,$image); 
 $url="http://www.google.co.in/intl/en_comhttp://img.dovov.comsrpr/logo1w.png"; $contents=file_get_contents($url); $save_path="/path/to/the/dir/and/image.jpg"; file_put_contents($save_path,$contents); 

您必须将allow_url_fopen设置为on

这SO线程将解决您的问题。 总之解决scheme:

 $url = 'http://www.google.co.in/intl/en_comhttp://img.dovov.comsrpr/logo1w.png'; $img = '/my/folder/my_image.gif'; file_put_contents($img, file_get_contents($url)); 
 $url = "http://www.examplehttp://img.dovov.comimage.gif"; $save_name = "image.gif"; $save_directory = "/var/www/example/downloads/"; if(is_writable($save_directory)) { file_put_contents($save_directory . $save_name, file_get_contents($url)); } else { exit("Failed to write to directory "{$save_directory}"); }