来自ftp地址的asp.net图像源

时间:2013-01-18 10:19:38

标签: c# asp.net image ftp ftpwebrequest

使用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来说是新的)。

任何帮助都会很棒。谢谢你们!

1 个答案:

答案 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";

希望这有帮助。