示例#1
0
        public void UploadFile(Stream fileStream, string ftpFilePath)
        {
            if (fileStream == null)
            {
                throw new ArgumentNullException("fileStream", "отсутствует поток выгружаемого файла");
            }
            CheckFtpPath(ftpFilePath);

            try
            {
                var    request       = FtpWebRequestFacroty.Create(ftpFilePath, FtpRequestType.UploadFile, _ftpServerName, _ftpServerCredentials, _ftpServerUsePassive, _proxy);
                Stream requestStream = request.GetRequestStream();

                request.ContentLength = fileStream.Length;

                var buffer = new byte[BufferSize];
                int bytesread;
                do
                {
                    bytesread = fileStream.Read(buffer, 0, buffer.Length);
                    requestStream.Write(buffer, 0, bytesread);
                } while (bytesread > 0);

                fileStream.Close();

                requestStream.Close();

                var response = (FtpWebResponse)request.GetResponse();
                response.Close();
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#2
0
        /// <summary>
        /// Загрузить файл
        /// </summary>
        /// <param name="ftpFilePath">путь до файла на ftp</param>
        /// <param name="outStream">поток в которой будет идти запись; после с завершения загрузки поток не закрывается</param>
        public void DownloadFile(string ftpFilePath, Stream outStream)
        {
            CheckFtpPath(ftpFilePath);
            if (outStream == null)
            {
                throw new ArgumentNullException("outStream", "поток для записи загружаемого файла отсутствует");
            }

            try
            {
                var request = FtpWebRequestFacroty.Create(ftpFilePath, FtpRequestType.DownloadFile, _ftpServerName, _ftpServerCredentials, _ftpServerUsePassive, _proxy);

                using (var response = (FtpWebResponse)request.GetResponse())
                    using (Stream responseStream = response.GetResponseStream().ThrowIfNull("не удалось получить поток для передачи файла"))
                    {
                        var buffer = new byte[BufferSize];
                        int bytesread;
                        do
                        {
                            bytesread = responseStream.Read(buffer, 0, buffer.Length);
                            outStream.Write(buffer, 0, bytesread);
                        } while (bytesread > 0);
                    }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#3
0
        /// <summary>
        /// Загрузить файл
        /// </summary>
        /// <param name="ftpFilePath">путь до файла на ftp</param>
        /// <param name="processingStreamFunc">функция обработки потока</param>
        /// <returns>возвращает результат работы функции обработки потока скачивания</returns>
        public TRes DownloadFile <TRes>(string ftpFilePath, Func <Stream, TRes> processingStreamFunc)
        {
            CheckFtpPath(ftpFilePath);
            if (processingStreamFunc == null)
            {
                throw new ArgumentNullException(nameof(processingStreamFunc), "функция обработки загружаемого файла отсутствует");
            }

            var request = FtpWebRequestFacroty.Create(ftpFilePath, FtpRequestType.DownloadFile, _ftpServerName, _ftpServerCredentials, _ftpServerUsePassive, _proxy);

            using (var response = (FtpWebResponse)request.GetResponse())
                using (Stream responseStream = response.GetResponseStream().ThrowIfNull("не удалось получить поток для передачи файла"))
                    return(processingStreamFunc(responseStream));
        }