将远程图片文件保存到服务器,使用PHP

12

我想将一个远程图片文件保存到我的服务器上,但是我不知道该怎么做。

图片的URL地址是http://img.youtube.com/vi/Rz8KW4Tveps/1.jpg,需要保存并重命名为imgfolder/imgID.jpg

2个回答

36

您可以使用file_get_contents()在PHP脚本中将远程图片加载到二进制字符串中(PHP文件访问通常接受URL以访问远程资源 - 这非常方便),然后将该文件存储在您具有写入权限的位置。这是一个非常简单的示例:

$image = file_get_contents("http://img.youtube.com/vi/Rz8KW4Tveps/1.jpg");
file_put_contents("imgfolder/imgID.jpg", $image);

达达!


它对我来说运行良好,我有一个问题。如果有人想抓取没有任何扩展名的图片,比如Facebook上的公共图片,该怎么办?问候 - Moxet Jan
它应该工作一样:文件包装器不关心“扩展名”,甚至不关心HTTP头中的MIME内容类型 - 它只是从您指定的位置获取二进制数据。 - Guss

22

如果允许使用URL流封装器,你可以只用一行代码来实现,而不必将其加载到变量中:

copy('http://img.youtube.com/vi/Rz8KW4Tveps/1.jpg', 'imgfolder/imgID.jpg');

这样做大大降低了 PHP 内存不足的可能性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接