示例#1
0
        // Command line arguments are two strings:
        // 1. The url that is the name of the file being uploaded to the server.
        // 2. The name of the file on the local machine.
        //
        public void UpLoader(List <FilePathInfo> filelist)
        {
            foreach (FilePathInfo eFilePathInfo in filelist)
            {
                // Create a Uri instance with the specified URI string.
                // If the URI is not correctly formed, the Uri constructor
                // will throw an exception.
                ManualResetEvent waitObject;
                Uri    target   = new Uri(string.Format("ftp://{0}:{1}/", m_strIP, m_nPort) + eFilePathInfo.FileNameWithSuf);
                string fileName = eFilePathInfo.FilePath;
                CheckFileExist(eFilePathInfo.FileFolder.Substring(eFilePathInfo.nKillPathLen) + "\\");
                FtpState      state   = new FtpState();
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
                request.Credentials = new NetworkCredential(m_strName, m_strPassword);
                request.Method      = WebRequestMethods.Ftp.UploadFile;

                // This example uses anonymous logon.
                // The request is anonymous by default; the credential does not have to be specified.
                // The example specifies the credential only to
                // control how actions are logged on the server.

                // Store the request in the object that we pass into the
                // asynchronous operations.
                state.Request  = request;
                state.FileName = fileName;

                // Get the event to wait on.
                waitObject = state.OperationComplete;

                // Asynchronously get the stream for the file contents.
                request.BeginGetRequestStream(
                    new AsyncCallback(EndGetStreamCallback),
                    state
                    );

                // Block the current thread until all operations are complete.
                waitObject.WaitOne();

                // The operations either completed or threw an exception.
                if (state.OperationException != null)
                {
                    throw state.OperationException;
                }
                else
                {
                    //MessageBox.Show("The operation completed : " + state.StatusDescription, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
示例#2
0
        public void FtpMakeDir(string dirname)
        {
            ManualResetEvent waitObject;
            Uri           target  = new Uri(string.Format("ftp://{0}:{1}/", m_strIP, m_nPort) + dirname);
            FtpState      state   = new FtpState();
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);

            request.Credentials = new NetworkCredential(m_strName, m_strPassword);
            request.Method      = WebRequestMethods.Ftp.MakeDirectory;

            // This example uses anonymous logon.
            // The request is anonymous by default; the credential does not have to be specified.
            // The example specifies the credential only to
            // control how actions are logged on the server.

            // Store the request in the object that we pass into the
            // asynchronous operations.
            state.Request = request;

            // Get the event to wait on.
            waitObject = state.OperationComplete;

            // Block the current thread until all operations are complete.
            waitObject.WaitOne();

            // The operations either completed or threw an exception.
            if (state.OperationException != null)
            {
                throw state.OperationException;
            }
            else
            {
                //MessageBox.Show("The operation completed : " + state.StatusDescription, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }


            //reqFtp.Credentials = new NetworkCredential("", "");
            //reqFtp.Proxy = null;
            //reqFtp.KeepAlive = false;
            //reqFtp.Method = WebRequestMethods.Ftp.MakeDirectory;
            //reqFtp.UseBinary = true;
        }
示例#3
0
        private static void EndGetStreamCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState)ar.AsyncState;

            Stream requestStream = null;

            // End the asynchronous call to get the request stream.
            try
            {
                requestStream = state.Request.EndGetRequestStream(ar);
                // Copy the file contents to the request stream.
                const int  bufferLength = 2048;
                byte[]     buffer       = new byte[bufferLength];
                int        count        = 0;
                int        readBytes    = 0;
                FileStream stream       = File.OpenRead(state.FileName);
                do
                {
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    requestStream.Write(buffer, 0, readBytes);
                    count += readBytes;
                }while (readBytes != 0);
                //MessageBox.Show("Writing  bytes to the stream: " + count, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                // IMPORTANT: Close the request stream before sending the request.
                requestStream.Close();
                // Asynchronously get the response to the upload request.
                state.Request.BeginGetResponse(
                    new AsyncCallback(EndGetResponseCallback),
                    state
                    );
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                MessageBox.Show("Could not get the request stream ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                state.OperationException = e;
                state.OperationComplete.Set();
                return;
            }
        }
示例#4
0
        // The EndGetResponseCallback method
        // completes a call to BeginGetResponse.
        private static 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;
                // Signal the main application thread that
                // the operation is complete.
                state.OperationComplete.Set();
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine("Error getting response.");
                state.OperationException = e;
                state.OperationComplete.Set();
            }
        }