- //上传文件
- 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;
- }
- 转载自:http://little-bill.iteye.com/blog/1485287
C# FTP 自动创建目录/上传文件
最新推荐文章于 2024-08-05 12:17:26 发布