希望我能像我想的那样解释这个
我有一个网络应用程序,其中包含来自供应商列表的产品。例如 www.example.com.au/Browse.aspx?SupplierID=XYZ 仅显示 XYZ 供应商的产品。然后转到详细信息页面 www.example.com.au/Product.aspx?ProductID=123。此页面显示该产品的详细信息列表(图片库、产品数据表,即 PDF 等)。
现在,每个供应商都有一个 ftp 帐户,他可以在其中上传他们的产品信息 - ftp://resources.example.com.au,这可以通过 resources.example.com.au/* 访问。因此,假设供应商 XYZ 将具有以下内容:
resources.example.com.au/XYZ/123.jpg <== main product image
resources.example.com.au/XYZ/123_a.jpg <== secondary image
resources.example.com.au/XYZ/123_b.jpg <== secondary image
resources.example.com.au/XYZ/123_c.jpg <== secondary image
(由于应用程序要求,Web 应用程序与资源文件夹位于不同的服务器上)
现在,要获取相关产品图片列表,我有以下内容:
public List<string> GetFiles(string strDirectoryName, string strStartsWith)
{
List<string> files = new List<string>();
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFTPUrl + strDirectoryName));
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(strFtpUser, strFtpPassword);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
while (!reader.EndOfStream)
{
string filename = reader.ReadLine().ToString();
if (filename.Length > 4)
{
if (!string.IsNullOrEmpty(strStartsWith))
{
if (filename.StartsWith(strStartsWith, StringComparison.OrdinalIgnoreCase))
{
files.Add(filename);
}
}
}
}
response.Close();
responseStream.Close();
reader.Close();
return files;
}
不幸的是,这个函数会遍历所有文件(可能大约 100,000 个),并且只选择我需要的文件。
我的问题:有没有更好的方法来过滤我需要的图像,而不是遍历整个目录?
或者,也许是另一种获取这些图像的方法?