【问题标题】:Check whether a folder exists on FTP server before uploading to that folder在上传到该文件夹​​之前检查 FTP 服务器上是否存在文件夹
【发布时间】:2013-12-06 15:03:01
【问题描述】:

我已经查看了有关此主题的其他帖子,但我似乎无法弄清楚在尝试将文件上传到 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();
            }

【问题讨论】:

标签: c# asp.net ftp directory


【解决方案1】:

尝试列出目录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
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多