kidys 发表于 2015-5-26 12:27:24

winform的ftp方式上传

//ftp方式上传
      public static int UploadFtp(string filePath, string filename, string ftpServerIP, string ftpUserID, string ftpPassword)
      {
         
                FileInfo fileInf = new FileInfo(filePath + "\\" + filename);
                string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
                FtpWebRequest reqFTP;
            
                // Create FtpWebRequest object from the Uri provided
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
                try
                {
                  // Provide the WebPermission Credintials
                  reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                  // By default KeepAlive is true, where the control connection is not closed
                  // after a command is executed.
                  reqFTP.KeepAlive = false;
                  // Specify the command to be executed.
                  reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                  // Specify the data transfer type.
                  reqFTP.UseBinary = true;
                  // Notify the server about the size of the uploaded file
                  reqFTP.ContentLength = fileInf.Length;
                  // The buffer size is set to 2kb
                  int buffLength = 2048;
                  byte[] buff = new byte;
                  int contentLen;
                  // Opens a file stream (System.IO.FileStream) to read the file to be uploaded
                  //FileStream fs = fileInf.OpenRead();
                  FileStream fs = fileInf.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

                  // Stream to which the file to be upload is written
                  Stream strm = reqFTP.GetRequestStream();
                  // Read from the file stream 2kb at a time
                  contentLen = fs.Read(buff, 0, buffLength);
                  // Till Stream content ends
                  while (contentLen != 0)
                  {
                        // Write Content from the file stream to the FTP Upload Stream
                        strm.Write(buff, 0, contentLen);
                        contentLen = fs.Read(buff, 0, buffLength);
                  }
                  // Close the file stream and the Request Stream
                  strm.Close();
                  fs.Close();
                  return 0;
            }
            catch (Exception ex)
            {
                reqFTP.Abort();
                Logging.WriteError(ex.Message + ex.StackTrace);
                return -2;
            }
      }
      //ftp方式下载
      public static int DownloadFtp(string filePath, string fileName, string ftpServerIP, string ftpUserID, string ftpPassword)
      {
            FtpWebRequest reqFTP;
            try
            {
                //filePath = < >,
                //fileName = < >
                FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName));
                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
                reqFTP.UseBinary = true;
                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
                Stream ftpStream = response.GetResponseStream();
                long cl = response.ContentLength;
                int bufferSize = 2048;
                int readCount;
                byte[] buffer = new byte;
                readCount = ftpStream.Read(buffer, 0, bufferSize);
                while (readCount > 0)
                {
                  outputStream.Write(buffer, 0, readCount);
                  readCount = ftpStream.Read(buffer, 0, bufferSize);
                }
                ftpStream.Close();
                outputStream.Close();
                response.Close();
                return 0;
            }
            catch (Exception ex)
            {
                Logging.WriteError(ex.Message + ex.StackTrace);
                return -2;
            }
      }
页: [1]
查看完整版本: winform的ftp方式上传