C# 在ASP.NET页面上直接从FTP显示图像
我有一个web应用程序,我想直接从FTP服务器向用户显示图像。只要图像控件只获取图像URL而不获取图像,我就必须这样做:C# 在ASP.NET页面上直接从FTP显示图像,c#,asp.net,image,ftp,C#,Asp.net,Image,Ftp,我有一个web应用程序,我想直接从FTP服务器向用户显示图像。只要图像控件只获取图像URL而不获取图像,我就必须这样做: newArticle.ImageUrl = "ftp://" + FTPUser + ":" + FTPPassword + "@" + FTPServer + dtLatestArticles.Rows[i]["PictureUrl"].ToString(); 这意味着每个人都有ftp服务器的用户和密码。你知道怎么用另一种方法吗 由于空间不足,我不希望也无法将文件保存在运
newArticle.ImageUrl = "ftp://" + FTPUser + ":" + FTPPassword + "@" + FTPServer + dtLatestArticles.Rows[i]["PictureUrl"].ToString();
这意味着每个人都有ftp服务器的用户和密码。你知道怎么用另一种方法吗
由于空间不足,我不希望也无法将文件保存在运行网页的服务器上。如果FTP服务器需要身份验证,则无法隐藏凭据 一种方法是在站点上添加一个代理类型处理程序,该处理程序将在URL上获取图像的名称,并从FTP服务器检索文件并直接发送给用户。这样,只有您的代码才具有凭据,如果没有空间,则无需将文件保存到其他任何位置 请注意,这将使服务器的流量增加一倍的图像量,一次输入一次输出
更好的方法是找到一个具有足够容量和可能性的服务器,用于HTTP文件服务 我认为你应该采取的方法是
var webClient = new WebClient();
byte[] imageBytes = webClient.DownloadData("ftp://server/image.png");
context.Response.Buffer = true;
context.Response.Charset = "";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "image/png";
context.Response.AddHeader("content-disposition", "attachment;filename=Image.png");
context.Response.BinaryWrite(imageBytes);
调用此文件
<img src="FetchImage.ashx" />
对这段代码的改进是将文件名发送到FetchImage.ashx并提供相同的服务。在这个示例中,我只是向您展示了如何做到这一点您可以创建一个类,在其中定义一些静态变量,如
ftpUsername
,ftpPassword
等。在那里保存您的用户名和密码,无论何时需要连接到ftp服务器,只需将这些静态变量直接调用到代码中即可。这将帮助您隐藏您的实际用户名和密码
public static class ClassName
{
static internal string connString = "Server=localhost;Database=db_criminalact;UID=root;Password='';CharSet=utf8;Connection Timeout=10;";
static internal string ftpServer = "127.0.0.1"; //"192.168.3.3";
static internal string ftpFolder = "criminalact_pic";
static internal string ftpUsername = "ftpserver";
static internal string ftpPassword = "pswadmin";
}
对于直接从ftp显示图像的问题,您可以参考:我认为这不是您想要的吗?是否只想在本地显示图像?此链接可能会提供一些有关这方面的见解,因为您可以在上载和访问它之前将其本地存储在web客户端上。这不是我想要的,我已经将文件上传到ftp服务器上,并希望将它们显示给用户。那么文件存储在哪里?该网站与FTP服务器不在同一服务器上?不,这就是问题所在。网站位于另一台服务器上使用处理程序(ASHX)比使用页面要好得多,因为不需要整个页面生命周期我同意。。我只是想提出OP可以实现的概念/步骤,我看到你在这方面胜过了我:)不,不会,它仍然会像以前一样显示在图像的URL链接中。将其存储为静态变量不会突然使密码和用户名变得安全