使用图像URL和PHP从远程服务器上传/下载/保存图像到本地服务器?

时间:2014-11-05 03:14:59

标签: javascript php jquery image file-upload

我正在构建一个讨论论坛,作为我正在构建的更大应用程序的一部分,论坛只是应用程序的一部分。

对于发布新主题或发布回复时的TextArea字段,我认为没有任何内容与PageDown Markdown Library一样好。它与StackOverflow在其所有站点上使用的功能相同,并且比许多竞争对手更好。

图书馆出货的方式,我对默认的Insert Image功能感到不满意。您点击按钮插入图像,它允许您输入图像的URL,然后插入正确的MarkDown语法以显示链接的图像。

这只是没有削减它。我需要你在StackOverflow上看到的功能!非常相似。

当你单击“插入图像”按钮时,我需要它来显示一个Dialog,就像现在一样,但它不仅仅是一个图像URL的输入字段,它将有2个字段选项......

  • 从您的计算机上传图片
  • 插入图片网址,然后它会从该网址下载图片并将其插入帖子,就像您从计算机上传了该图片一样。重要的是不要混淆这一步。 IT不应该简单地插入将其链接到原始图像URL的图像。相反,它将获取该URL并将Image下载/上载到upload from computer选项所在的同一服务器,然后它将插入指向新上载图像的新图像URL!

基于一些简单的HTML,如下面的一个Dialog窗口,其中包含我从计算机上传功能的文件,我已经有了。我需要提供一些JavaScript和PHP,当只使用URL文本输入字段内的URL单击按钮时,将下载/保存远程图像到我服务器上的上传文件夹。

所以它需要做一些事情......

  • 使用PHP获取并将图像文件保存到我的uploads文件夹时,PHP函数将接收的唯一内容是图像的URL,该URL可能位于同一服务器上,也可能位于远程服务器上。
  • 从URL成功保存/上传图像后,PHP函数将返回状态/错误的JSON字符串,如果成功,它还将返回新图像保存在本地的实际URL和文件名服务器。 JavaScript / AJAX脚本将接收此JSON响应,并将图像的Markdown语法插入PageDown编辑器。
  • PHP函数需要确保它尝试保存/下载的URL是有效的图像文件而不是某些恶意文件!除非我们允许文件类型,否则不仅仅是一些错误文件类型的文件,如非图像文件。
  • 它将成为许多恐龙服务器上安装的模块的一部分,因此它需要在尽可能多的服务器上工作!

                 来自网络     

                 

                 从您的计算机          

我会非常感谢任何帮助,提示,代码段或任何有助于此的内容。在这个阶段,我真的只需要构建一个nie PHP函数,它将从远程URL上传图像,并确保传入的URL是真实的图像文件,甚至更好,它在允许的文件类型数组中!

几年前,我已经开始这个了,但现在已经失去了它,我重新开始并且不会记得我当时是怎么做的。

1 个答案:

答案 0 :(得分:2)

从远程服务器下载文件的最简单方法是使用副本(http://php.net/manual/en/function.copy.php):

copy('http://someurl.com/image.png', '/var/www/uploads/image.png');

由于此函数返回bool,因此很容易确定操作是否成功并创建JSON响应。

要验证该文件是实际图像,遗憾的是无法100%确定。虽然这可能足以检查mimetype。你可以使用finfo(http://php.net/manual/en/function.finfo-file.php):

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename);
finfo_close($finfo);

对于gif,这将返回image / gif例如。您必须对要允许的所有mimetypes的列表进行硬编码。