/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="destination"></param> /// <param name="userToken"></param> public void DownloadFileAsync(string source, FileStream destination, object userToken) { if (destination.CanWrite) { var _resource = new Uri(string.Format("{0}/{1}", Host, source)); var _length = GetContentLength(_resource); var _request = CreateRequest(_resource, WebRequestMethods.Ftp.DownloadFile); var _context = new ExternalActionContext(_request, true, BUFFER_SIZE, destination, userToken, _length); _context.BeginGetResponse(x => AsyncGetResponseCallback(x)); } }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <returns></returns> long GetContentLength(Uri source) { var _request = CreateRequest(source, WebRequestMethods.Ftp.GetFileSize); using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false)) { _context.BeginGetResponse(x => AsyncGetResponseCallback(x)); _waitHandle.WaitOne(); _waitHandle.Reset(); return(_context.ContentLength); } }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <returns></returns> public bool ExistDirectory(string path) { var _resource = new Uri(string.Format("{0}/{1}", Host, path)); var _request = CreateRequest(_resource, WebRequestMethods.Ftp.ListDirectory); using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false)) { _context.BeginGetResponse(x => AsyncGetResponseCallback(x)); _waitHandle.WaitOne(); _waitHandle.Reset(); return(!(_context.Result as FtpResult).ErrorCode.Equals(FtpStatusCode.ActionNotTakenFileUnavailable)); } }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <returns></returns> public IExternalResult CreateDirectory(string path) { var _resource = new Uri(string.Format("{0}/{1}", Host, path)); var _request = CreateRequest(_resource, WebRequestMethods.Ftp.MakeDirectory); using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, false)) { _context.BeginGetResponse(x => AsyncGetResponseCallback(x)); _waitHandle.WaitOne(); _waitHandle.Reset(); return(_context.Result); } }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="destination"></param> /// <returns></returns> public IExternalResult DownloadFile(string source, FileStream destination) { if (destination.CanWrite) { var _resource = new Uri(string.Format("{0}/{1}", Host, source)); var _length = GetContentLength(_resource); var _request = CreateRequest(_resource, WebRequestMethods.Ftp.DownloadFile); using (var _context = new ExternalActionContext(_request, false, BUFFER_SIZE, destination, null, _length)) { _context.BeginGetResponse(x => AsyncGetResponseCallback(x)); _waitHandle.WaitOne(); _waitHandle.Reset(); return(_context.Result); } } return(new FtpResult()); }