【问题标题】:Retrieve image from FTP to webpage将图像从 FTP 检索到网页
【发布时间】:2013-06-14 16:33:08
【问题描述】:

我的 ftp 服务器中有一个文件夹,其中包含多个图像。我正在尝试在

之类的网页中访问和显示这些图像
<img src="ftp://my_ftp_ip_address/Images/imagename.jpg"/>

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

【问题讨论】:

    标签: html ftp


    【解决方案1】:

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


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

    创建一个充当图像源的脚本(PHP 或您使用的任何其他脚本)(您将在&lt;img src=...&gt; 属性中使用它。该脚本将通过从 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 wrappers。如果您的网络服务器不允许这样做,您必须使用 FTP 功能更加困难。看 PHP: How do I read a file from FTP server into a variable?


    虽然要获得真正正确的解决方案,但您应该提供一些与文件相关的 HTTP 标头,例如 Content-LengthContent-TypeContent-Disposition。为此,请参阅Download file via PHP script from FTP server to browser with Content-Length header without storing the file on the web server


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

    【讨论】:

    • 我喜欢这个,因为它解决了使用ftp的问题,避免了将图片移动到其他位置。
    【解决方案2】:

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

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

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

    【讨论】:

    • 但是我的网页是私有的,托管在我的本地主机中。
    • 所以?这不是不正确做事的借口。使用 http(s)。或者 file:// 如果您没有在本地安装网络服务器
    【解决方案3】:

    您可以尝试像这样修改您的 src 属性:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 2017-10-14
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多