使用C#ASP.Net和visual Studio 2012 ultimate。
我重复使用了表格中的一些代码。从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 :(得分: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";
希望这有帮助。