.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;  
}  

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章