使用 PHP 以编程方式保存远程图像

Saving a remote image programmatically with PHP

我正在尝试将一些内容从一个资源迁移到另一个资源,并且需要保存位于远程资源的一些图像(数百张)。

假设我只有一张图片的 URL:

https://www.example.com/some_image.jpg

我想使用 PHP 将它保存到文件系统中。

如果我要上传图片,我基本上会执行以下操作:

<input type="file" name="my_image" />

move_uploaded_file($_FILES['my_image']['tmp_name'], '/my_img_directory');

但由于我只有 URL,我想像这样:

$img = 'https://www.example.com/some_image.jpg';
$file = readfile($img);
move_uploaded_file($file, '/my_img_directory');

这当然行不通,因为 move_uploaded_file() 不将输出缓冲区作为第一个参数。

本质上,在这种方法下,我需要将 $img 放入 $_FILES[] 数组中。或者可能有其他方法?

$image = file_get_contents('http://www.url.com/image.jpg');
file_put_contents('/images/image.jpg', $image); //Where to save the image on your server

您可以使用PHP的复制功能将远程文件复制到您服务器上的某个位置:

copy("https://example.com/some_image.jpg", "/path/to/file.jpg");

http://php.net/manual/en/function.copy.php