示例#1
0
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var container = await DatabaseFileContainerRepository.FindAsync(
                args.ContainerName,
                args.CancellationToken
                );

            if (container == null)
            {
                return(false);
            }

            var file = await DatabaseFileRepository.FindAsync(
                container.Id,
                args.FileId,
                args.CancellationToken
                );

            if (file == null)
            {
                return(false);
            }

            using (var fs = new FileStream(args.Path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                await fs.WriteAsync(file.Content, 0, file.Content.Length);
            }
            return(true);
        }
示例#2
0
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var fileName      = S3FileNameCalculator.Calculate(args);
            var client        = GetS3Client(args);
            var containerName = GetContainerName(args);

            var getObjectResponse = await client.GetObjectAsync(containerName, fileName);

            await getObjectResponse.WriteResponseStreamToFileAsync(args.Path, true, args.CancellationToken);

            return(true);
        }
示例#3
0
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var fileName = AzureFileNameCalculator.Calculate(args);

            if (!await FileExistsAsync(args, fileName))
            {
                return(false);
            }
            var blobClient = GetBlobClient(args, fileName);
            var download   = await blobClient.DownloadToAsync(args.Path, args.CancellationToken);

            return(download.Status == (int)HttpStatusCode.OK);
        }
示例#4
0
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var fileName      = MinioFileNameCalculator.Calculate(args);
            var client        = GetMinioClient(args);
            var containerName = GetContainerName(args);

            if (!await FileExistsAsync(client, containerName, fileName))
            {
                return(false);
            }

            await client.GetObjectAsync(containerName, fileName, args.Path);

            return(true);
        }
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var filePath = FilePathCalculator.Calculate(args);

            if (!File.Exists(filePath))
            {
                return(false);
            }

            return(await Policy.Handle <IOException>()
                   .WaitAndRetryAsync(2, retryCount => TimeSpan.FromSeconds(retryCount))
                   .ExecuteAsync(async() =>
            {
                using var fileStream = File.OpenRead(filePath);
                using var ts = new FileStream("", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                await fileStream.CopyToAsync(ts, args.CancellationToken);
                return true;
            }));
        }
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var containerName = GetContainerName(args);
            var fileName      = AliyunFileNameCalculator.Calculate(args);
            var ossClient     = GetOssClient(args.Configuration);

            if (!FileExistsAsync(ossClient, containerName, fileName))
            {
                return(false);
            }

            var result = ossClient.GetObject(containerName, fileName);

            using (var fs = new FileStream(args.Path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                await result.Content.CopyToAsync(fs);
            }
            return(true);
        }
        public override async Task <bool> DownloadAsync(FileProviderDownloadArgs args)
        {
            var configuration = args.Configuration.GetFastDFSConfiguration();

            ConfigurationFactory.AddIfNotContains(configuration);

            var fileId        = FileNameCalculator.Calculate(args);
            var containerName = GetContainerName(configuration, args);
            var storageNode   = await Client.GetStorageNodeAsync(containerName, configuration.ClusterName);

            try
            {
                await Client.DownloadFileEx(storageNode, fileId, args.Path, configuration.ClusterName);

                return(true);
            }
            catch (Exception ex)
            {
                Logger.LogException(ex, LogLevel.Error);
                return(false);
            }
        }
示例#8
0
 public Task <bool> DownloadAsync(FileProviderDownloadArgs args)
 {
     throw new NotImplementedException();
 }