1

file1.pdf や file2.pdf などのファイルをいくつかアップロードし、... Web サーバーにアップロードしました ->ftp.MYWEBSITE.net\wwwroot\myfiles\

これらすべてのファイル名を取得して、Web サイトに動的に表示したいのですが、

たとえば、クライアントがアドレス www.MYWEBSITE.com にアクセスすると、すべてのファイル名がリストに表示されます。

MYWEBSITE がアップロードされることに注意してくださいwwwroot\mywebsite\default.aspx

ftp ユーザー ID とパスワードで ftp 接続を使用する必要がありますか? または、新しい ftp 接続を作成せずに \myfiles パスに直接移動できますか?

asp.net で任意のコントロールを使用する必要がありますか?

4

4 に答える 4

2

次のコードを使用できます。

 void GetFiles()
        {
            DirectoryInfo d= new DirectoryInfo(strFolderPath);
            var files = d.GetFiles("*.pdf*");
            FileInfo[] subfileInfo = files.ToArray<FileInfo>();

            if (subfileInfo.Length > 0)
            {
                for (int j = 0; j < subfileInfo.Length; j++)
                {
                    bool isHidden = ((File.GetAttributes(subfileInfo[j].FullName) & FileAttributes.Hidden) == FileAttributes.Hidden);
                    if (!isHidden)
                    {
                        string strExtention = th.GetExtension(subfileInfo[j].FullName);
                        if (strExtention.Contains("pdf"))
                        {                            
                            string path = subfileInfo[j].FullName;
                            string name = bfileInfo[j].Name;                           
                        }
                    }
                }
            }
于 2012-10-10T13:52:10.490 に答える
0

FTP を使用しないでください。

  1. 有効な親パスを構成します: http://msdn.microsoft.com/en-us/library/ms524697%28v=vs.90%29.aspx

    <system.web> <asp enableParentPaths="true"> </system.web>

  2. パスを取得します: string strFolderPath = Server.MapPath("~/../myfiles");

  3. Arshad が提供するコードを使用する

于 2012-10-10T14:08:58.307 に答える
0

このコードで試すことができます

class Program
{
    static void Main(string[] args)
    {
        FTPClient client = new FTPClient("ftp://localhost", "ftpUser", "ftpPass");
        List<string> files = client.DirectoryListing();
        foreach (string s in files)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}

public class FTPClient
{
  // The hostname or IP address of the FTP server
  private string _remoteHost;

  // The remote username
  private string _remoteUser;

  // Password for the remote user
  private string _remotePass;

  public FTPClient(string remoteHost, string remoteUser, string remotePassword)
  {
    _remoteHost = remoteHost;
    _remoteUser = remoteUser;
    _remotePass = remotePassword;
  }


  public List<string> DirectoryListing()
  {
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(_remoteHost);
    request.Method = WebRequestMethods.Ftp.ListDirectory;
    request.Credentials = new NetworkCredential(_remoteUser, _remotePass);
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);

    List<string> result = new List<string>();

    while (!reader.EndOfStream)
    {
        result.Add(reader.ReadLine());
    }

    reader.Close();
    response.Close();
    return result;
 }

}

于 2012-10-10T14:11:28.683 に答える
0

FTP と Web サイトの両方が同じサーバー上にある場合、.net ライブラリのファイル オブジェクトを使用してファイルのリストを読み取り、ASP.NET のリピーター コントロールにバインドできます。

DirectoryInfoオブジェクトとFileInfo同じものを使用できます。

于 2012-10-10T13:19:53.110 に答える