Ejemplo n.º 1
0
        public async Task DeleteFilesAsync(IEnumerable <Guid> fileIds)
        {
            var storageDirectory = _configuration.GetValue <string>("FileStoreDirectory");

            foreach (var fileId in fileIds)
            {
                var file          = _fileMetadataRepository.Get(fileId);
                var fileDirectory = Path.Combine(storageDirectory, fileId.ToString());

                if (Directory.Exists(fileDirectory))
                {
                    Directory.Delete(fileDirectory, true);
                }

                if (file == null)
                {
                    continue;
                }

                if (file.Store == FileStore.Azure)
                {
                    var blobReference = await _azureAccountManager.GetBlobReferenceAsync(file);

                    await blobReference.DeleteIfExistsAsync();
                }

                _fileMetadataRepository.Delete(file.Id);
            }
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> DownloadSingle(Guid fileId)
        {
            var fileMetadata = _fileMetadataRepository.Get(fileId);

            if (fileMetadata.Store == FileStore.Azure)
            {
                var downloadUrl = await _fileUploadManager.GetAzureFileDownloadLinkAsync(fileMetadata);

                return(RedirectPermanent(downloadUrl));
            }

            var fileStream = await _fileUploadManager.GetFileContentAsync(fileMetadata);

            var contentType = MimeUtility.GetMimeMapping(fileMetadata.FileName);

            return(File(fileStream, contentType, fileMetadata.FileName));
        }