Exemple #1
0
        public void ListFinish(IAsyncResult ar)
        {
            FtpWebResponse response = null;

            try
            {
                ListFileAsyncState stateObj = ar.AsyncState as ListFileAsyncState;
                FtpWebRequest      request  = stateObj.Request;
                _currentPath = stateObj.Path;
                response     = (FtpWebResponse)request.EndGetResponse(ar);
                _result      = response.StatusDescription;
                ServerFiles  = ServerFileInfo.Parse(response.GetResponseStream());
            }
            catch (Exception e)
            {
                if (response != null)
                {
                    _result = response.StatusDescription;
                }
                else
                {
                    _result = e.Message;
                }
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
                _listFileRequestFinished = true;
            }
        }
Exemple #2
0
 private void UploadNextFile(IAsyncResult ar)
 {
     //清空
     _currLength = 0;
     _abort      = false;
     if (_uploadResponse != null)
     {
         _uploadResponse.Close();
     }
     if (_fileStream != null)
     {
         _fileStream.Close();
     }
     if (_requestStream != null)
     {
         _requestStream.Close();
     }
     _uploadResponse = (FtpWebResponse)_uploadRequest.EndGetResponse(ar);
     //_result = "文件上传成功";
     try
     {
         if (_uploadFiles.Count != 0)
         {
             FileInfo       file       = _uploadFiles[0] as FileInfo;
             ServerFileInfo serverFile = SearchFile(file.Name.Replace('#', '_'));
             if (serverFile != null)
             {
                 _currLength = serverFile.Size;
             }
             else
             {
                 _currLength = 0;
             }
             string uploadUrl = @"ftp://" + this.Address + ":" + this.Port + "/" + file.Name.Replace('#', '_');
             _uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);
             if ((bool)_uploadFilesStateTable[file])
             {//覆盖
                 _uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
                 _currLength           = 0;
             }
             else
             {
                 _uploadRequest.Method = _currLength == 0 ? WebRequestMethods.Ftp.UploadFile : WebRequestMethods.Ftp.AppendFile;
             }
             _uploadRequest.Credentials = new NetworkCredential(this.UserName, this.Password);
             _uploadRequest.Proxy       = null;
             _uploadRequest.KeepAlive   = false;
             _uploadRequest.BeginGetRequestStream(new AsyncCallback(TransFile), file);
         }
     }
     catch (Exception e)
     {
         _result = e.Message;
     }
 }
Exemple #3
0
        public double GetFileProcess(FileInfo uploadFile)
        {
            ServerFileInfo serverFile = SearchFile(uploadFile.Name);

            if (serverFile != null)
            {
                return((double)serverFile.Size / (double)uploadFile.Length);
            }
            else
            {
                return(0);
            }
        }
Exemple #4
0
 /// <summary>
 /// 删除目录
 /// </summary>
 /// <param name="dirName">目录名(含路径)</param>
 /// <returns></returns>
 public bool RemoveDir(string url)
 {
     try
     {
         _deleteFileFinished = false;
         FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
         request.Credentials = new NetworkCredential(this.UserName, this.Password);
         request.Method      = WebRequestMethods.Ftp.ListDirectoryDetails;
         FtpWebResponse response = request.GetResponse() as FtpWebResponse;
         IList          fileList = ServerFileInfo.Parse(response.GetResponseStream());
         foreach (ServerFileInfo file in fileList)
         {
             if (file.Name.Equals(".") || file.Name.Equals(".."))
             {
                 continue;
             }
             if (file.Directory)
             {
                 RemoveDir(url + file.Name + "/");
             }
             else
             {
                 if (file.Name.IndexOf('#') != -1)
                 {
                     throw new Exception();
                 }
                 FtpWebRequest delete = (FtpWebRequest)WebRequest.Create(url + file.Name);
                 delete.Credentials = new NetworkCredential(this.UserName, this.Password);
                 delete.Method      = WebRequestMethods.Ftp.DeleteFile;
                 Console.WriteLine(((FtpWebResponse)delete.GetResponse()).StatusDescription);
             }
         }
         request             = (FtpWebRequest)WebRequest.Create(url.Substring(0, url.Length - 1));
         request.Credentials = new NetworkCredential(this.UserName, this.Password);
         request.Method      = WebRequestMethods.Ftp.RemoveDirectory;
         request.KeepAlive   = false;
         response            = request.GetResponse() as FtpWebResponse;
         this.Result         = response.StatusDescription;
         response.Close();
     }
     catch (Exception e)
     {
         this.Result = e.Message;
         return(false);
     }
     finally
     {
         _deleteFileFinished = true;
     }
     return(true);
 }
Exemple #5
0
 public bool UploadFile(IList files)
 {
     try
     {
         //区分第一次
         if (files != null)
         {
             _uploadFiles = files;
         }
         _abort = false;
         if (_uploadFiles.Count != 0)
         {
             FileInfo file = _uploadFiles[0] as FileInfo;
             //把'#'替换为'_'
             ServerFileInfo serverFile = SearchFile(file.Name.Replace('#', '_'));
             if (serverFile != null)
             {
                 _currLength = serverFile.Size;
             }
             else
             {
                 _currLength = 0;
             }
             string uploadUrl = FTP_URL_PREFIX + file.Name.Replace('#', '_');
             _uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl);
             if ((bool)_uploadFilesStateTable[file])
             {//覆盖
                 _uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;
                 _currLength           = 0;
             }
             else
             {
                 _uploadRequest.Method = _currLength == 0 ? WebRequestMethods.Ftp.UploadFile : WebRequestMethods.Ftp.AppendFile;
             }
             _uploadRequest.Credentials = new NetworkCredential(this.UserName, this.Password);
             _uploadRequest.Proxy       = null;
             _uploadRequest.KeepAlive   = false;
             _uploadRequest.BeginGetRequestStream(new AsyncCallback(TransFile), file);
         }
         return(true);
     }
     catch (Exception e)
     {
         _result = e.Message;
         return(false);
     }
 }