我正在寻找一种简单的方法来导入/复制图像从远程服务器到一个本地文件夹使用PHP。我无法通过FTP访问服务器,但所有远程图像都可以通过HTTP (即http://www.mydomain.com/myimage.jpg)访问。
示例用法:用户希望将图像添加到他的配置文件。该图像已经存在于web上,并且用户提供了一个直接URL。我不希望热链接的图像,但从我的域名导入和服务。
发布于 2009-05-26 08:57:37
如果您在服务器上启用了PHP5和HTTP stream wrapper,那么将其复制到本地文件将非常简单:
copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');
这将处理任何需要的流水线等。如果你需要提供一些HTTP参数,还有第三个'stream context‘参数可以提供。
发布于 2013-01-17 17:37:35
使用
$imageString = file_get_contents("http://example.com/image.jpg");
$save = file_put_contents('Image/saveto/image.jpg',$imageString);
发布于 2009-05-26 07:43:46
下面是最基本的方法:
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$rfile = fopen($url, "r");
$lfile = fopen($dir . basename($url), "w");
while(!feof($url)) fwrite($lfile, fread($rfile, 1), 1);
fclose($rfile);
fclose($lfile);
但是,如果您正在做很多这样的事情(或者您的主机阻止对远程系统的文件访问),请考虑使用CURL,它更高效,速度稍快,并且可以在更多共享主机上使用。
您还可以欺骗用户代理,使其看起来像桌面而不是机器人!
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$lfile = fopen($dir . basename($url), "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
curl_setopt($ch, CURLOPT_FILE, $lfile);
fclose($lfile);
curl_close($ch);
对于这两个实例,您可能希望通过GD传递它,以确保它确实是一个图像。
https://stackoverflow.com/questions/909374
复制相似问题