0

我在我的网络上的 ftp 服务器上获取了我的照片,我想在我的网站上显示这些照片。

怎么可能呢?

之前我用过("/Boats/{BoatId}/{ImageId} + "." + {ImageExtension"),但现在我有我的照片了\\ftplocation\files\boatcompany\boats\

我尝试了以下方法:(适用于上面的网址)。

ImageUrl='<%# String.Format(@"\\ftp\files\boatcompany\boats\{0}\thumbnails\{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>' />
4

2 回答 2

3

除了 Max 的回答之外,我还想添加第三个解决方案,它适用于私有和公共 ftp 服务器(以及其他任何东西)。

您需要做的是使用您的应用程序作为 ftp 的代理。

  • 添加一个页面,f.ex。“getimage.aspx”接受参数,f.ex。图片的id
  • 从页面调用时,响应带有标题设置(mime-type 等)(保持)
  • 连接到 ftp 服务器,根据需要登录并流式传输请求的文件。
  • 将该流的内容转发到您页面的流(响应流)并关闭。

然后你可以这样做(换行使其更具可读性):

ImageUrl = '<%# 
    String.Format(@"/getimage.aspx?boatid={0}&imageid={1}&extension={2}", 
                  Eval("BoatId"), 
                  Eval("Image.ImageId"), 
                  Eval("Image.Extension")) %>'

对于 FTP,您可以使用 .net 中的内置功能或使用第三方扩展程序,例如Rebex-FTP,它可以让来自 ftp 的流式文件在公园散步。

以这种方式使用页面检索图片使其能够从各种来源获取图像,而不仅仅是 ftp,同时保持对用户透明。

于 2012-11-12T22:35:57.763 回答
2

由于安全问题,浏览器永远不会从本地存储加载任何资源(包括图像)。因此,URL 喜欢\\server\myfile.jpgfile:///server/myfile.jpg永远不会从 Internet 网站加载。这就是你的代码不起作用的原因。

你有两个选择:

1. 如果您的 ftplocation 是一个真正的 FTP 服务器,并且可以使用真正的 FTP URL 从外部世界访问它,您可以使用以下代码:

ImageUrl='<%# String.Format(@"ftp://ftp.server.com/files/boatcompany/boats/{0}/thumbnails/{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>

2. 您可以在 Web 项目中的 IIS 中创建一个虚拟子文件夹,调用它Boats并将该虚拟文件夹指向\\ftplocation\files\boatcompany\文件夹。然后在您的代码中使用这个(与您在获得 FTP 之前使用的代码几乎相同):

ImageUrl='<%# String.Format(@"/Boats/{0}/thumbnails/{1}.{2}", Eval("BoatId"), Eval("Image.ImageId"), Eval("Image.Extension")) %>
于 2012-11-12T22:23:54.103 回答