私は思っているようにこれを説明します。ASP.NET C#でftpでファイルを検索する(より良いコード)
私はサプライヤーのリストから製品を持つ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;
}
残念ながら、この関数は(約10万のをすることができた)すべてのファイルを経由して、私は必要なファイルだけを選択します。
私の質問:ディレクトリ全体を調べるのではなく、必要な画像だけをフィルタリングする方法がありますか?
また、これらの画像を取得する別の方法はありますか?