上传外部图像并将其保存在我的服务器上

时间:2011-04-30 00:13:33

标签: php

我希望能够上传图片或只是粘贴图片的网址,以便为我的网站用户上传sa个人资料图片。

重点是我不想存储网址,但我希望在我的服务器上有该图像的副本,因为如果外部图像丢失我不想丢失它...

我相信facebook和tumblr等都这样做...... php脚本或最佳实践是做什么的?

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以使用PHP函数(http://php.net/manual/en/function.file-get-contents.php

从图像中获取内容(字节)
$contents = file_get_contents('http://www.google.com/images/logos/ps_logo2.png');

您也可以使用CURL库...以下是如何使用下载ImageFromUrl并将其保存在本地SaveLocation中的示例

function downloadImageFromUrl($imageLinkURL, $saveLocationPath) {
   $channel = curl_init();
   $curl_setopt($channel, CURLOPT_URL, $imageLinkURL);
   $curl_setopt($channel, CURLOPT_POST, 0);
   $curl_setopt($channel, CURLOPT_RETURNTRANSFER, 1);
   $fileBytes = curl_exec($channel); 
   curl_close($channel);

   $fileWritter = fopen($saveLocationPath, 'w');
   fwrite($fileWritter, $fileBytes);
   fclose($fileWritter); 
}

您可以按如下方式使用:

downloadImageFromUrl("http://www.google.com/images/logos/ps_logo2.png", "/tmp/ps_logo2.png")

您也可以通过解析URL获得相同的图像名称......

答案 1 :(得分:0)

我认为您正在寻找:Copy Image from Remote Server Over HTTP

答案 2 :(得分:0)

您可以使用名为imagecreatefromjpeg的功能。它需要一个指向图像的URL路径,并从中创建一个新图像。看看http://php.net/manual/en/function.imagecreatefromjpeg.php

不同的扩展程序有不同的功能(如果你喜欢使用它)。您可能需要从URL检查图像扩展名并使用我想要的相应功能。

答案 3 :(得分:0)

处理上传的内容为in this documentation,如果用户粘贴了网址,我建议您使用file_get_contents将图片副本保存到服务器,然后您只需存储路径即可那个图像,而不是外部图像。