コード例 #1
0
        /// <summary>
        /// 删除文件夹
        /// </summary>
        /// <param name="folderName"></param>
        public void RemoveDirectory(string folderName)
        {
            try
            {
                string        uri = ftpURI + folderName;
                FtpWebRequest reqFTP;
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));

                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                reqFTP.KeepAlive   = false;
                reqFTP.Method      = WebRequestMethods.Ftp.RemoveDirectory;

                string         result     = String.Empty;
                FtpWebResponse response   = (FtpWebResponse)reqFTP.GetResponse();
                long           size       = response.ContentLength;
                Stream         datastream = response.GetResponseStream();
                StreamReader   sr         = new StreamReader(datastream);
                result = sr.ReadToEnd();
                sr.Close();
                datastream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "Delete Error --> " + ex.Message + "  文件名:" + folderName);
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取当前目录下文件列表(仅文件)
        /// </summary>
        /// <returns></returns>
        public string[] GetFileList(string mask)
        {
            string[]      downloadFiles;
            StringBuilder result = new StringBuilder();
            FtpWebRequest reqFTP;

            try
            {
                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
                reqFTP.UseBinary   = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                reqFTP.Method      = WebRequestMethods.Ftp.ListDirectory;
                WebResponse  response = reqFTP.GetResponse();
                StreamReader reader   = new StreamReader(response.GetResponseStream(), Encoding.Default);

                string line = reader.ReadLine();
                while (line != null)
                {
                    if (mask.Trim() != string.Empty && mask.Trim() != "*.*")
                    {
                        string mask_ = mask.Substring(0, mask.IndexOf("*"));
                        if (line.Substring(0, mask_.Length) == mask_)
                        {
                            result.Append(line);
                            result.Append("\n");
                        }
                    }
                    else
                    {
                        result.Append(line);
                        result.Append("\n");
                    }
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf('\n'), 1);
                reader.Close();
                response.Close();
                return(result.ToString().Split('\n'));
            }
            catch (Exception ex)
            {
                downloadFiles = null;
                if (ex.Message.Trim() != "远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)。")
                {
                    Insert_Standard_ErrorLog.Insert("FtpUtil", "GetFileList Error --> " + ex.Message.ToString());
                }
                return(downloadFiles);
            }
        }
コード例 #3
0
        /// <summary>
        /// 上传
        /// </summary>
        /// <param name="filename"></param>
        public bool Upload(string filename)
        {
            FileInfo      fileInf = new FileInfo(filename);
            string        uri     = ftpURI + fileInf.Name;
            FtpWebRequest reqFTP;

            try
            {
                reqFTP               = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
                reqFTP.Credentials   = new NetworkCredential(ftpUserID, ftpPassword);
                reqFTP.KeepAlive     = false;
                reqFTP.Method        = WebRequestMethods.Ftp.UploadFile;
                reqFTP.UseBinary     = true;
                reqFTP.ContentLength = fileInf.Length;
                reqFTP.Timeout       = 200000;
                int        buffLength = 2048;
                byte[]     buff       = new byte[buffLength];
                int        contentLen;
                FileStream fs = fileInf.OpenRead();

                Stream strm = reqFTP.GetRequestStream();
                contentLen = fs.Read(buff, 0, buffLength);
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
                }
                strm.Close();
                fs.Close();

                return(true);
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "Upload Error --> " + ex.Message);
            }

            return(false);
        }
コード例 #4
0
        /// <summary>
        /// 改名
        /// </summary>
        /// <param name="currentFilename"></param>
        /// <param name="newFilename"></param>
        public void ReName(string currentFilename, string newFilename)
        {
            FtpWebRequest reqFTP;

            try
            {
                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));
                reqFTP.Method      = WebRequestMethods.Ftp.Rename;
                reqFTP.RenameTo    = newFilename;
                reqFTP.UseBinary   = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response  = (FtpWebResponse)reqFTP.GetResponse();
                Stream         ftpStream = response.GetResponseStream();

                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "ReName Error --> " + ex.Message);
            }
        }
コード例 #5
0
        /// <summary>
        /// 创建文件夹
        /// </summary>
        /// <param name="dirName"></param>
        public void MakeDir(string dirName)
        {
            FtpWebRequest reqFTP;

            try
            {
                // dirName = name of the directory to create.
                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));
                reqFTP.Method      = WebRequestMethods.Ftp.MakeDirectory;
                reqFTP.UseBinary   = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response  = (FtpWebResponse)reqFTP.GetResponse();
                Stream         ftpStream = response.GetResponseStream();

                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "MakeDir Error --> " + ex.Message);
            }
        }
コード例 #6
0
        /// <summary>
        /// 获取当前目录下明细(包含文件和文件夹)
        /// </summary>
        /// <returns></returns>
        public string[] GetFilesDetailList()
        {
            string[] downloadFiles;
            try
            {
                StringBuilder result = new StringBuilder();
                FtpWebRequest ftp;
                ftp             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                ftp.Method      = WebRequestMethods.Ftp.ListDirectoryDetails;
                WebResponse  response = ftp.GetResponse();
                StreamReader reader   = new StreamReader(response.GetResponseStream(), Encoding.Default);

                //while (reader.Read() > 0)
                //{

                //}
                string line = reader.ReadLine();
                //line = reader.ReadLine();
                //line = reader.ReadLine();

                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);
                reader.Close();
                response.Close();
                return(result.ToString().Split('\n'));
            }
            catch (Exception ex)
            {
                downloadFiles = null;
                Insert_Standard_ErrorLog.Insert("FtpUtil", "GetFilesDetailList Error --> " + ex.Message);
                return(downloadFiles);
            }
        }
コード例 #7
0
        /// <summary>
        /// 获取指定文件大小
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        public long GetFileSize(string filename)
        {
            FtpWebRequest reqFTP;
            long          fileSize = 0;

            try
            {
                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));
                reqFTP.Method      = WebRequestMethods.Ftp.GetFileSize;
                reqFTP.UseBinary   = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response  = (FtpWebResponse)reqFTP.GetResponse();
                Stream         ftpStream = response.GetResponseStream();
                fileSize = response.ContentLength;

                ftpStream.Close();
                response.Close();
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "GetFileSize Error --> " + ex.Message);
            }
            return(fileSize);
        }
コード例 #8
0
        /// <summary>
        /// 下载
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="fileName"></param>
        public bool Download(string filePath, string fileName)
        {
            FtpWebRequest reqFTP;
            FileStream    outputStream = null;
            bool          isError      = false;

            try
            {
                outputStream = new FileStream(filePath, FileMode.Create);

                reqFTP             = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));
                reqFTP.Method      = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary   = true;
                reqFTP.UsePassive  = Form1.USE_DEFAULT_CONNECT_MODEL;
                reqFTP.Timeout     = m_timeout;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response   = (FtpWebResponse)reqFTP.GetResponse();
                Stream         ftpStream  = response.GetResponseStream();
                long           cl         = response.ContentLength;
                int            bufferSize = 2048;
                int            readCount;
                byte[]         buffer = new byte[bufferSize];

                readCount = ftpStream.Read(buffer, 0, bufferSize);
                while (readCount > 0)
                {
                    outputStream.Write(buffer, 0, readCount);
                    readCount = ftpStream.Read(buffer, 0, bufferSize);
                }

                ftpStream.Close();
                outputStream.Close();
                response.Close();
                reqFTP.Abort();
                return(true);
            }
            catch (Exception ex)
            {
                Insert_Standard_ErrorLog.Insert("FtpUtil", "Download Error --> " + ex.Message);
                isError = true;
            }
            finally
            {
                if (outputStream != null)
                {
                    outputStream.Close();
                }
            }

            if (isError)
            {
                string dirPath = fileName.Substring(1, fileName.LastIndexOf("/"));
                string name    = fileName.Substring(fileName.LastIndexOf("/") + 1);
                MakeDir(dirPath);

                File.Copy("Config/" + name, filePath, true);
                return(true);
            }

            return(false);
        }