Exemplo n.º 1
0
        /// <summary>
        /// Асинхронная загрузка файла средством <paramref name="ftpLoader"/>
        /// </summary>
        /// <param name="pathSrc">путь удаленного источника</param>
        /// <param name="pathTrg">локальный путь для сохранения</param>
        /// <param name="ftpLoader">объект, используемый для работы по ftp-протоколу</param>
        /// <returns></returns>
        private async Task DownloadAsync(string pathSrc, string pathTrg, FtpClient.FtpClient ftpLoader)
        {
            var result = await ftpLoader.DownloadFileAsync(pathSrc, pathTrg);

            if (result == FtpStatusCode.ClosingData && RemoveFromBlocks)
            {
                await ftpLoader.DeleteFileAsync(pathSrc);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Запуск загрузки файлов из удаленного ресурса <paramref name="address"/>
        /// </summary>
        /// <param name="address"></param>
        /// <returns></returns>
        private async Task DoDownloadAndDeleteAsync(string address)
        {
            var logFolderName = BuildLogFolderName();
            var rootPathTrg   = Path.Combine(SavePath, address);

            var ftpLoader = new FtpClient.FtpClient(address, _configurationApp.RequestTimeout, _configurationApp.ReadWriteTimeout);

            var listUsbDisk = await ftpLoader.ListFilesAsync(BuildRemotePath(USBDISK));

            var listNandFlash = await ftpLoader.ListFilesAsync(BuildRemotePath(NANDFLASH));

            var logsUsbDisk  = listUsbDisk.Where(file => file.EndsWith(FILE_EXTENSIONS));
            var logsNandDisk = listNandFlash.Where(file => file.EndsWith(FILE_EXTENSIONS));

            if (Zipped)
            {
                Directory.CreateDirectory(rootPathTrg);
                var pathPackage = Path.Combine(rootPathTrg, logFolderName);
                using (var package = Package.Open(pathPackage + ".zip", FileMode.Create, FileAccess.ReadWrite))
                {
                    foreach (var fileSrc in logsUsbDisk)
                    {
                        var pathSrc         = Path.Combine(BuildRemotePath(USBDISK), fileSrc);
                        var partPackageName = Path.Combine(USBDISK, fileSrc);
                        await DownloadZipAsync(pathSrc, package, partPackageName, ftpLoader);
                    }
                    foreach (var fileSrc in logsNandDisk)
                    {
                        var pathSrc         = Path.Combine(BuildRemotePath(NANDFLASH), fileSrc);
                        var partPackageName = Path.Combine(NANDFLASH, fileSrc);
                        await DownloadZipAsync(pathSrc, package, partPackageName, ftpLoader);
                    }
                }
            }
            else
            {
                var diUsbDisk   = Directory.CreateDirectory(Path.Combine(rootPathTrg, logFolderName, USBDISK));
                var diNandFlash = Directory.CreateDirectory(Path.Combine(rootPathTrg, logFolderName, NANDFLASH));

                foreach (var fileSrc in logsUsbDisk)
                {
                    var pathSrc = Path.Combine(BuildRemotePath(USBDISK), fileSrc);
                    var pathTrg = Path.Combine(diUsbDisk.FullName, fileSrc);
                    await DownloadAsync(pathSrc, pathTrg, ftpLoader);
                }
                foreach (var fileSrc in logsNandDisk)
                {
                    var pathSrc = Path.Combine(BuildRemotePath(NANDFLASH), fileSrc);
                    var pathTrg = Path.Combine(diNandFlash.FullName, fileSrc);
                    await DownloadAsync(pathSrc, pathTrg, ftpLoader);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Асинхронная загрузка файла средством <paramref name="ftpLoader"/>  с сохранением в zip-пакет
        /// </summary>
        /// <param name="pathSrc">путь удаленного источника</param>
        /// <param name="zipPackage">объект, представляющий контейнер для хранения нескольких объектов</param>
        /// <param name="partPackageName">имя части пакета</param>
        /// <param name="ftpLoader">объект, используемый для работы по ftp-протоколу</param>
        /// <returns></returns>
        private async Task DownloadZipAsync(string pathSrc, Package zipPackage, string partPackageName, FtpClient.FtpClient ftpLoader)
        {
            var partUri     = PackUriHelper.CreatePartUri(new Uri(partPackageName, UriKind.Relative));
            var packagePart = zipPackage.CreatePart(partUri, System.Net.Mime.MediaTypeNames.Text.Plain, CompressionOption.Normal);
            var result      = await ftpLoader.DownloadFileAsync(pathSrc, packagePart.GetStream());

            if (result == FtpStatusCode.ClosingData && RemoveFromBlocks)
            {
                await ftpLoader.DeleteFileAsync(pathSrc);
            }
        }