繁体   English   中英

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

[英]Upload/download/save image to a local server from a remote server using an Image URL and PHP?

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

对于发布新主题或发布回复时的TextArea字段,我认为没有什么比PageDown Markdown Library更好。 StackOverflow在其所有站点上使用的都是同一款产品,并且比许多竞争对手更有效。

虽然该库的发布方式对默认的“ Insert Image功能不满意。 您单击按钮以插入图像,它允许您输入图像的URL,然后插入正确的MarkDown语法以显示链接的图像。

这只是不会削减。 我需要您在StackOverflow上看到的功能! 反正很相似。

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

  • 从您的计算机上传图像
  • 插入图像URL,然后它将从该URL下载图像并将其插入到帖子中,就像您是从计算机上载的一样。 这对于不要混淆此步骤很重要。 IT人员不应简单地插入将其链接到原始图像URL的图像。 取而代之的是,它将使用该URL并将图像下载/上传到与upload from computer选项相同的服务器upload from computer ,然后它将插入指向新上载图像的NEW Image URL!

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

因此,它需要做一些事情...

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

    通过网络

    从您的计算机

如果有任何帮助,技巧,代码段或任何有关此方面的帮助,我将不胜感激。 在此阶段,我真的只需要构建一个nie PHP函数即可从远程URL上传图像,并确保传入的URL是真实图像文件,甚至更好的是它位于允许的文件类型数组中!

几年前,我已经开始这样做了,但是现在却迷失了方向。

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

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

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

要验证该文件是否为实际图像,很遗憾,无法百分百确定。 虽然可能足以检查模仿类型。 您可以为此使用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列表进行硬编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM