private void EndGetResponseCallback(IAsyncResult ar) { FtpState state = (FtpState)ar.AsyncState; FtpWebResponse response = null; try { response = (FtpWebResponse)state.Request.EndGetResponse(ar); response.Close(); state.StatusDescription = response.StatusDescription; state.OperationComplete.Set(); } catch (Exception e) { state.OperationException = e; state.OperationComplete.Set(); } }
public CommonResultModel NewFileUpload(string fname) { ManualResetEvent waitObject; FtpState state = new FtpState(); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(_url + @"/" + fname); request.UseBinary = true; request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(_username, _password); string status = string.Empty; //byte[] b = File.ReadAllBytes(_filePath); state.Request = request; state.FileName = fname; waitObject = state.OperationComplete; request.BeginGetRequestStream( new AsyncCallback(EndGetStreamCallback), state ); waitObject.WaitOne(new TimeSpan(0, 40, 0)); if (state.OperationException != null) { throw state.OperationException; } else { //Console.WriteLine("The operation completed - {0}", state.StatusDescription); } return(new CommonResultModel { IsOK = true, Message = string.Format("Upload File Complete, status {0}", status), }); }
private void EndGetStreamCallback(IAsyncResult ar) { FtpState state = (FtpState)ar.AsyncState; Stream requestStream = null; try { requestStream = state.Request.EndGetRequestStream(ar); const int bufferLength = 2048; byte[] buffer = new byte[bufferLength]; int count = 0; int readBytes = 0; FileStream stream = File.OpenRead(this._filePath); do { readBytes = stream.Read(buffer, 0, bufferLength); requestStream.Write(buffer, 0, readBytes); count += readBytes; }while (readBytes != 0); //Console.WriteLine("Writing {0} bytes to the stream.", count); requestStream.Close(); stream.Close(); state.Request.BeginGetResponse( new AsyncCallback(EndGetResponseCallback), state ); } catch (Exception e) { //Console.WriteLine("Could not get the request stream."); state.OperationException = e; state.OperationComplete.Set(); return; } }