私が考えているようにこれを説明したいと思っています
サプライヤーのリストからの製品を含む Web アプリがあります。例: 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 の可能性があります) を調べて、必要なファイルのみを選択します。
私の質問: ディレクトリ全体を通過するのではなく、必要な画像のみをフィルタリングするより良い方法はありますか?
または、おそらくこれらの画像を取得する別の方法はありますか?