Пример #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;
            }
        }
Пример #2
0
        private void EndGetResponseCallback(IAsyncResult ar)
        {
            FtpWebRequest uploadRequest = (FtpWebRequest)ar.AsyncState;

            //结束由BeginGetResponse启动的挂起的异步操作
            FtpWebResponse uploadResponse = (FtpWebResponse)uploadRequest.EndGetResponse(ar);

            Console.WriteLine(uploadResponse.StatusDescription);
            Console.WriteLine("Upload complete");
        }
Пример #3
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;
     }
 }
Пример #4
0
        private void DeleteFinish(IAsyncResult ar)
        {
            _deleteFileFinished = true;
            FtpWebRequest _deleteRequest = ar.AsyncState as FtpWebRequest;

            try
            {
                FtpWebResponse response = (FtpWebResponse)_deleteRequest.EndGetResponse(ar);
                _result = response.StatusDescription;
                response.Close();
            }
            catch (Exception e)
            {
                _result = e.Message;
            }
        }
Пример #5
0
 // The EndGetResponseCallback method  
 // completes a call to BeginGetResponse.
 private void EndGetResponseCallback(IAsyncResult ar)
 {
     FtpWebResponse response = null;
     try 
     {
         response = (FtpWebResponse) request.EndGetResponse(ar);
     }
     // Return exceptions to the main application thread.
     catch (Exception e)
     {
         Console.WriteLine ("Error getting response.");
         asyncException = e;
         wait.Set();
     }
     Console.WriteLine("Upload status: {0}",response.StatusDescription);
     // Signal the application thread that this operation is complete.
     wait.Set();
 }
Пример #6
0
        private static MemoryStream DoOldStyleAsync(FtpWebRequest request, MemoryStream requestBody)
        {
            if (requestBody != null)
            {
                IAsyncResult ar = request.BeginGetRequestStream(null, null);
                ar.AsyncWaitHandle.WaitOne();
                Stream requestStream = request.EndGetRequestStream(ar);
                requestBody.CopyTo(requestStream);
                requestStream.Close();
            }

            IAsyncResult ar2 = request.BeginGetResponse(null, null);

            ar2.AsyncWaitHandle.WaitOne();
            FtpWebResponse response = (FtpWebResponse)request.EndGetResponse(ar2);

            MemoryStream responseBody = new MemoryStream();

            response.GetResponseStream().CopyTo(responseBody);
            response.Close();

            return(responseBody);
        }
Пример #7
0
 /// <summary>
 /// Returns an IWebResponse.
 /// </summary>
 /// <param name="asyncResult">An System.IAsyncResult that references a pending request for a response.</param>
 /// <returns>An IWebResponse that contains a response to the Internet request.</returns>
 public override IWebResponse EndGetResponse(IAsyncResult asyncResult)
 {
     return(new FtpWebResponseAdapter((FtpWebResponse)_ftpWebRequest.EndGetResponse(asyncResult)));
 }
Пример #8
0
        private static MemoryStream DoOldStyleAsync(FtpWebRequest request, MemoryStream requestBody)
        {
            if (requestBody != null)
            {
                IAsyncResult ar = request.BeginGetRequestStream(null, null);
                ar.AsyncWaitHandle.WaitOne();
                Stream requestStream = request.EndGetRequestStream(ar);
                requestBody.CopyTo(requestStream);
                requestStream.Close();
            }

            IAsyncResult ar2 = request.BeginGetResponse(null, null);
            ar2.AsyncWaitHandle.WaitOne();
            FtpWebResponse response = (FtpWebResponse)request.EndGetResponse(ar2);

            MemoryStream responseBody = new MemoryStream();
            response.GetResponseStream().CopyTo(responseBody);
            response.Close();

            return responseBody;
        }