2013-01-18 47 views
1

使用C#ASP.Net和Visual Studio 2012最终版。来自ftp地址的asp.net图像源

我从表单中重新使用了一些代码。从FTP服务器下载图像。

public class FTPdownloader 
{ 
    public Image Download(string fileName, string ftpServerIP, string ftpUserID, string ftpPassword) 
    { 
     FtpWebRequest reqFTP; 
     Image tmpImage = null; 
     try 
     { 
      reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName)); 
      reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; 
      reqFTP.UseBinary = true; 
      reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 

      FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 
      Stream ftpStream = response.GetResponseStream(); 

      tmpImage = Image.FromStream(ftpStream); 

      ftpStream.Close(); 
      //outputStream.Close(); 
      response.Close(); 
     } 
     catch (Exception ex) 
     { 
      //MessageBox.Show(ex.Message); 
     } 
     return tmpImage; 
    } 
} 

伟大的工程,我所做的就是在我的窗体上这样称呼它。

imgPart.Image = ftpclass.Download("" + "" + ".jpg", "address/images", "user", "pass"); 

现在这对winforms很好用。我的新项目是一个asp.net webform。我需要它来做同样的事情。 我已经重新使用这段代码,似乎没问题,但是当我调用img.Image的方法时,我发现img.Image在asp.net中不存在。 基本上我正在返回一个图像,我能找到的最接近的是一个Img.ImageUrl,当然这是一个字符串。

所以即时通讯希望这是这个代码稍微改变一些东西在呼叫我缺少(新的asp.net)。

任何帮助将是伟大的。多谢你们!

+0

您是否在文件顶部的引用中使用了“System.Drawing”? – Scott

+0

是的引用它在顶部对不起,我没有把它放在 – lemunk

+0

当你试图编译代码时,你会得到什么错误? – Scott

回答

2

您的下载功能返回的System.Drawing.Image与ASP.NET的图像控件(System.Web.UI.Webcontrols.Image)之间有冲突。

您可以通过稍微修改FTP下载功能来简化问题,以便下载并保存文件,以供Image Web控件使用。

更改下载功能:

private void Download(string fileName, string ftpServerIP, string ftpUserID, string ftpPassword, string outputName) 
{ 
    using(WebClient request = new WebClient()) 
    { 
     request.Credentials = new NetworkCredential(ftpUserID, ftpPassword); 
     byte[] fileData = request.DownloadData(string.Format("ftp://{0}{1}", ftpServerIP, filename)); 

     using(FileStream file = File.Create(Server.MapPath(outputName))) 
     { 
      file.Write(fileData, 0, fileData.Length); 
     } 
    } 
} 

的,你可以使用此代码来获取你的形象:

// Download image 
ftpclass.Download("/images/myimage.jpg", "server-address", "user", "pass", "/mysavedimage.jpg"); 

// Now link to the image 
imgPart.ImageUrl = "/mysavedimage.jpg"; 

希望这有助于。

+1

您可能想要跳过该图像并使用'byte [] fileData = reqFTP.DownloadData(yourPath)'。我看不出在这里创建一个'System.Drawing.Image' – nunespascal

+0

@nunespascal这是一个很好的观点。将更新 – Scott