从ftp服务器(本地)获取图片以在网站上显示

时间:2012-11-12 20:03:25

标签: c# asp.net ftp webforms

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

怎么办呢?

早些时候我使用("/Boats/{BoatId}/{ImageId} + "." + {ImageExtension"),但现在我的照片在\\ftplocation\files\boatcompany\boats\

我尝试了以下操作:(使用上面的url)。

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

2 个答案:

答案 0 :(得分: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,同时保持对用户透明。

答案 1 :(得分:2)

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

您有两种选择:

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")) %>