提问者:小点点

从FTP检索图像到网页


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

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

但它需要FTP用户名和密码。我怎样才能做到这一点?也可以使用JSP进行同样的操作吗?


共3个答案

匿名用户

使用最新版本的网络浏览器(Chrome59,火狐61),您甚至不能使用ftp://URL来检索图像。不管怎样,这从来都不是一个好的解决方案。

正确的解决方案是通过Web服务器路由映像,不仅要隐藏凭据,还要隐藏映像的原始源。

创建一个用作图像源的脚本(PHP或您使用的任何其他脚本)(您将在

在PHP中实现这样一个脚本(比如image.PHP)最简单的方法是:

<?

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

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

然后在HTML中使用它,如:

<a src="image.php" />

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

该脚本使用FTP URL包装器。如果在Web服务器上不允许这样做,则必须使用FTP函数。请参见PHP:如何将文件从FTP服务器读取到变量中?

虽然要获得真正正确的解决方案,您应该提供一些与文件相关的HTTP头,如内容长度内容类型内容处置。为此,请参阅通过PHP脚本将文件从FTP服务器下载到带有内容长度标题的浏览器,而不将文件存储在web服务器上。

在实践中,您可能会有更多的图像,因此您不会在脚本中使用硬编码的文件名,但是脚本将使用该名称作为参数。
请参阅列表并从FTP下载单击的文件

匿名用户

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

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

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

匿名用户

您可以尝试如下方式修改src属性:

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