.Net FTP 自动创建目录/上传文件

//上传文件  
public static Boolean FtpUpload(string ftpPath,string localFile)  
{  
    //检查目录是否存在,不存在创建  
    FtpCheckDirectoryExist(ftpPath);  
    FileInfo fi = new FileInfo(localFile);  
    FileStream fs = fi.OpenRead();  
    long length = fs.Length;  
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + ftpPath + fi.Name);  
    req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
    req.Method = WebRequestMethods.Ftp.UploadFile;  
    req.ContentLength = length;  
    req.Timeout = 10 * 1000;  
    try  
    {  
        Stream stream = req.GetRequestStream();  
        int BufferLength = 2048; //2K     
        byte[] b = new byte[BufferLength];  
        int i;  
        while ((i = fs.Read(b, 0, BufferLength)) > 0)  
        {  
            stream.Write(b, 0, i);  
        }  
        stream.Close();  
        stream.Dispose();  
    }  
    catch (Exception e)  
    {  
        ErrLog(e.Message + e.StackTrace);  
        return false;  
    }  
    finally  
    {  
        fs.Close();  
        req.Abort();  
    }  
    req.Abort();  
    return true;  
}  
  
//判断文件的目录是否存,不存则创建  
public static void FtpCheckDirectoryExist(string destFilePath)  
{  
    string fullDir = FtpParseDirectory(destFilePath);  
    string[] dirs = fullDir.Split('/');  
    string curDir = "/";  
    for (int i = 0; i < dirs.Length; i++)  
    {  
        string dir = dirs[i];  
        //如果是以/开始的路径,第一个为空    
        if (dir != null && dir.Length > 0)  
        {  
            try  
            {  
                curDir += dir + "/";  
                FtpMakeDir(curDir);  
            }  
            catch (Exception)  
            {}  
        }  
    }  
}  
  
public static string FtpParseDirectory(string destFilePath)  
{  
    return destFilePath.Substring(0, destFilePath.LastIndexOf("/"));  
}    
  
//创建目录  
public static Boolean FtpMakeDir(string localFile)  
{  
    FtpWebRequest req = (FtpWebRequest)WebRequest.Create(ftpServerIP + localFile);  
    req.Credentials = new NetworkCredential(ftpUserID, ftpPassword);  
    req.Method = WebRequestMethods.Ftp.MakeDirectory;  
    try  
    {  
        FtpWebResponse response = (FtpWebResponse)req.GetResponse();  
        response.Close();  
    }  
    catch (Exception)  
    {  
        req.Abort();  
        return false;  
    }  
    req.Abort();  
    return true;  
}  

  

posted @ 2022-10-13 20:39  好名字可以让你的朋友更容易记住你  阅读(126)  评论(0编辑  收藏  举报