我的 ftp 服务器中有一个文件夹,其中包含多个图像。我正在尝试在网页中访问和显示这些图像
<img src="ftp://my_ftp_ip_address/Images/imagename.jpg"/>
但它要求提供 FTP 用户名和密码。我怎样才能做到这一点?也可以使用 JSP 做同样的事情吗?
原文由 mpsbhat 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的 ftp 服务器中有一个文件夹,其中包含多个图像。我正在尝试在网页中访问和显示这些图像
<img src="ftp://my_ftp_ip_address/Images/imagename.jpg"/>
但它要求提供 FTP 用户名和密码。我怎样才能做到这一点?也可以使用 JSP 做同样的事情吗?
原文由 mpsbhat 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.5k 阅读✓ 已解决
2 回答902 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答913 阅读✓ 已解决
2 回答791 阅读
1 回答786 阅读✓ 已解决
2 回答1.1k 阅读
使用最新版本的网络浏览器( Chrome 59 、 Firefox 61 ),您甚至不能使用
ftp://
URL 来检索图像。无论如何,这从来都不是一个好的解决方案。正确的解决方案是通过您的网络服务器路由图像,不仅隐藏凭据,还隐藏图像的原始来源。
创建一个用作图像源的脚本(PHP 或您使用的任何其他脚本)(您将在
<img src=...>
属性中使用它)。脚本将通过从 FTP 服务器下载图像来“生成”图像。在 PHP 中实现此类脚本的最简单方法(比如
image.php
)是:(您需要对凭证进行 URL 编码,如果它们包含保留符号——您可以使用
urlencode
)。然后在 HTML 中使用它,例如:
(假设
image.php
与您的 HTML 页面位于同一文件夹中)该脚本使用 FTP URL 包装器。如果您的 Web 服务器不允许这样做,则您必须使用 FTP 功能走更难的路。请参阅 PHP:如何将文件从 FTP 服务器读取到变量中?
尽管对于真正正确的解决方案,您应该提供一些与文件相关的 HTTP 标头,例如
Content-Length
、Content-Type
和Content-Disposition
为此,请参阅 通过 PHP 脚本将文件从 FTP 服务器下载到具有 Content-Length 标头的浏览器,而不将文件存储在 Web 服务器上。实际上,您可能会有更多图像,因此您不会在脚本中硬编码文件名,但脚本会将名称作为参数。
请参阅 列出并从 FTP 下载单击的文件