Ejemplo n.º 1
0
        public override async Task FinalizeUploadAsync(Document document, ChunkMetaData uploadMetadata)
        {
            for (uint i = 0; i < document.ChunkCount; i++)
            {
                string tempFilename = GetTempFileName(uploadMetadata.UploadUid, i);
                string fileName     = GetFileName(document.ID, i);

                File.Move(Path.Combine(_rootDir, tempFilename), Path.Combine(_rootDir, fileName));
                _logger.LogDebug(string.Format("File {0} renamed to {1}", tempFilename, fileName));
            }
        }
        public override async Task WriteToStreamAsync(IFormFile file, ChunkMetaData uploadMetadata)
        {
            string tempFileName = GetTempFileName(uploadMetadata.UploadUid, Convert.ToUInt32(uploadMetadata.ChunkIndex));

            var fileRef = _container.GetBlockBlobReference(tempFileName);

            _logger.LogDebug("File {0} created in Azure Blob Storage.", tempFileName);

            await fileRef.UploadFromStreamAsync(file.OpenReadStream());

            _logger.LogDebug("Uploaded the chunks to Azure Blob Storage for file {0}.", tempFileName);
        }
Ejemplo n.º 3
0
        public override async Task WriteToStreamAsync(IFormFile file, ChunkMetaData uploadMetadata)
        {
            string filename = GetTempFileName(uploadMetadata.UploadUid, Convert.ToUInt32(uploadMetadata.ChunkIndex));
            var    filePath = Path.Combine(_rootDir, filename);

            _logger.LogDebug("Creating the file {0} on local storage.", filename);

            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await file.CopyToAsync(stream);

                _logger.LogDebug("Uploaded chunks to the file {0} local storage.", filename);
            }
        }
        public override async Task FinalizeUploadAsync(Document document, ChunkMetaData uploadMetadata)
        {
            for (uint i = 0; i < document.ChunkCount; i++)
            {
                string tempFilename = GetTempFileName(uploadMetadata.UploadUid, i);
                string fileName     = GetFileName(document.ID, i);

                var fileRef    = _container.GetBlockBlobReference(tempFilename);
                var newFileRef = _container.GetBlockBlobReference(fileName);

                await newFileRef.StartCopyAsync(fileRef);

                _logger.LogDebug(string.Format("File {0} renamed to {1}", tempFilename, fileName));

                await fileRef.DeleteAsync();

                _logger.LogDebug(string.Format("Deleteing temp file {0}", tempFilename));
            }
        }
 public abstract Task FinalizeUploadAsync(Document document, ChunkMetaData metadata);
 public abstract Task WriteToStreamAsync(IFormFile file, ChunkMetaData uploadMetadata);
        /// <summary>
        /// Initiates the document object to be saved in the database
        /// </summary>
        /// <returns></returns>
        public virtual async Task <Document> SaveDocumentToDatabaseAsync(ModelDataContext dataContext, ChunkMetaData metadata, Guid itemID, Guid uploadByID)
        {
            var doc = new Document
            {
                Name         = metadata.FileName,
                FileName     = metadata.FileName,
                MimeType     = FileEx.GetMimeTypeByExtension(metadata.FileName),
                ItemID       = itemID,
                Length       = metadata.TotalFileSize,
                UploadedByID = uploadByID,
                ChunkCount   = metadata.TotalChunks
            };

            dataContext.Documents.Add(doc);

            await dataContext.SaveChangesAsync();

            _logger.LogInformation($"Saved the document metadata to the database for { metadata.FileName }, ID: { doc.ID.ToString("D") }.");

            return(doc);
        }