从 FTP 检索图像到网页

新手上路,请多包涵

我的 ftp 服务器中有一个文件夹,其中包含多个图像。我正在尝试在网页中访问和显示这些图像

<img src="ftp://my_ftp_ip_address/Images/imagename.jpg"/>

但它要求提供 FTP 用户名和密码。我怎样才能做到这一点?也可以使用 JSP 做同样的事情吗?

原文由 mpsbhat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

使用最新版本的网络浏览器( Chrome 59Firefox 61 ),您甚至不能使用 ftp:// URL 来检索图像。无论如何,这从来都不是一个好的解决方案。


正确的解决方案是通过您的网络服务器路由图像,不仅隐藏凭据,还隐藏图像的原始来源。

创建一个用作图像源的脚本(PHP 或您使用的任何其他脚本)(您将在 <img src=...> 属性中使用它)。脚本将通过从 FTP 服务器下载图像来“生成”图像。

在 PHP 中实现此类脚本的最简单方法(比如 image.php )是:

 <?

header('Content-Type: image/jpeg');

echo file_get_contents('ftp://username:password@ftp.example.com/path/image.jpg');

(您需要对凭证进行 URL 编码,如果它们包含保留符号——您可以使用 urlencode )。

然后在 HTML 中使用它,例如:

 <a src="image.php" />

(假设 image.php 与您的 HTML 页面位于同一文件夹中)


该脚本使用 FTP URL 包装器。如果您的 Web 服务器不允许这样做,则您必须使用 FTP 功能走更难的路。请参阅 PHP:如何将文件从 FTP 服务器读取到变量中?


尽管对于真正正确的解决方案,您应该提供一些与文件相关的 HTTP 标头,例如 Content-LengthContent-TypeContent-Disposition 为此,请参阅 通过 PHP 脚本将文件从 FTP 服务器下载到具有 Content-Length 标头的浏览器,而不将文件存储在 Web 服务器上


实际上,您可能会有更多图像,因此您不会在脚本中硬编码文件名,但脚本会将名称作为参数。

请参阅 列出并从 FTP 下载单击的文件

原文由 Martin Prikryl 发布,翻译遵循 CC BY-SA 4.0 许可协议

您告诉浏览器使用 ftp 协议访问图像,这就是它尝试登录的原因。

将 ftp:// 更改为 http://(或 https://,如果使用 ssl)以访问图像。

您当然也可以将用户名和密码添加到图像中,但是这样每个人都可以查看您的代码并登录到您的 ftp 服务器……不是很安全;)

原文由 Pinoniq 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题