在上传到该文件夹​​之前,检查FTP服务器上是否存在文件夹

时间:2013-12-06 15:03:02

标签: c# asp.net ftp directory

我已经检查了这个主题的其他帖子,但在尝试上传文件之前,我似乎无法弄清楚检查 FTP服务器上是否存在目录的基础知识

使用以下代码,我尝试上传到已存在的文件夹时会得到exception。我觉得在创建目录之前使用某种folder.Exists应该不会太难,但我无法让它工作。有什么想法吗?

截至目前的上传方法:

        String id = Request.QueryString["ID"];
        String path = Server.MapPath("~/temp/");
        String filename = Path.GetFileName(fuPicture.PostedFile.FileName);

        if (fuPicture.HasFile)
        {
            try
            {
                fuPicture.PostedFile.SaveAs(path + fuPicture.FileName);
            }
            catch (Exception ex)
            {
                lblFeedback.Text = "Fel vid uppladdning";
            }
            path += fuPicture.FileName;

            String ftpServer = "ftp://xxx";

            String userName = "xx";
            String password = "xx";

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri("ftp://xx/" + id));

            // I want to implement an if-condition here 
            // whether or not the folder exists
                request.Method = WebRequestMethods.Ftp.MakeDirectory;
                request.Credentials = new NetworkCredential(userName, password);

            using (var resp = (FtpWebResponse)request.GetResponse())
            {
                WebClient client = new WebClient();
                client.Credentials = new NetworkCredential(userName, password);
                client.UploadFile(ftpServer + "/" + id + "/" + new FileInfo(path).Name, "STOR", path);
                resp.Close();
            }

1 个答案:

答案 0 :(得分:0)

尝试列出目录ListDirectory,如果找不到,则创建MakeDirectory

   request.Method = WebRequestMethods.Ftp.ListDirectory;
   request.Credentials = new NetworkCredential(userName, password);

   try
    {
        using (request.GetResponse())
        {
            //continue
        }
    }
    catch (WebException)
    {
        request.Method = WebRequestMethods.Ftp.MakeDirectory;
        using (request.GetResponse())
        {
            //continue
        }
    }