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); }
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); }