【问题标题】:Upload/download/save image to a local server from a remote server using an Image URL and PHP?使用图像 URL 和 PHP 从远程服务器上传/下载/保存图像到本地服务器?
【发布时间】:2015-01-01 04:00:38
【问题描述】:

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

对于我在发布新主题或帖子回复时的 TextArea 字段,我认为没有什么比 PageDown Markdown Library 更好的了。它与 StackOverflow 在其所有网站上使用的相同,并且比许多竞争对手的效果更好。

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

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

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

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

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

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

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

    来自网络

    从您的计算机

如果有任何帮助、提示、代码 sn-ps 或任何对此有帮助的东西,我将不胜感激。在这个阶段我真的只需要构建一个 nie PHP 函数,它将从远程 URL 上传图像,并确保传入的 URL 是真实的图像文件,或者更好的是它在允许的文件类型数组中!

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

【问题讨论】:

    标签: javascript php jquery image file-upload


    【解决方案1】:

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

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

    由于此函数返回一个布尔值,因此很容易判断操作是否成功并创建 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。您必须硬编码您想要允许的所有 mimetype 的列表。

    【讨论】:

    • 请注意,您可以使用php库来检查图像格式,例如Imagick的getImageFormat()。
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 2016-03-29
    • 2016-03-16
    • 2013-03-04
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多