public async Task <IActionResult> AddFileToDocument(IFormFile attachmentFile, [FromHeader] Guid personUniqueId, [FromQuery] string uniqueCode, [FromServices] FileStorageProvider fileStorageProvider, [FromServices] DocumentsManager manager) { var existAttachmentFile = await manager.CheckExistAttachmentFile(User.Identity.Name, uniqueCode, personUniqueId, attachmentFile); if (existAttachmentFile) { return(Json(ApiResponse.Success(false))); } var bucket = fileStorageProvider.GetDocumentBucket(); var fileStream = new MemoryStream(); await attachmentFile.CopyToAsync(fileStream); var metadata = new AttachmentFileMetadata { FileName = attachmentFile.FileName, ContentType = attachmentFile.ContentType, Size = fileStream.Length, Uploaded = DateTime.Now, ContentHash = Helper.CalculateSha1Hash(fileStream.ToArray()) }; fileStream.Position = 0; var id = await bucket.UploadFromStreamAsync(attachmentFile.FileName, fileStream, new GridFSUploadOptions() { Metadata = metadata.ToBsonDocument() }); var result = await manager.AddAttachmentFileToDraft(User.Identity.Name, uniqueCode, personUniqueId, new FileAttachmentResponse { FileId = id.ToString(), FileName = attachmentFile.FileName }); return(Json(ApiResponse.Success(result))); }
public async Task <IActionResult> Post(IFormFile attachmentFile, [FromServices] FileStorageProvider fileStorageProvider) { var bucket = fileStorageProvider.GetDocumentBucket(); var fileStream = new MemoryStream(); await attachmentFile.CopyToAsync(fileStream); var metadata = new AttachmentFileMetadata { FileName = attachmentFile.FileName, ContentType = attachmentFile.ContentType, Size = fileStream.Length, Uploaded = DateTime.Now, ContentHash = Helper.CalculateSha1Hash(fileStream.ToArray()) }; fileStream.Position = 0; var id = await bucket.UploadFromStreamAsync(attachmentFile.FileName, fileStream, new GridFSUploadOptions() { Metadata = metadata.ToBsonDocument() }); var result = new FileAttachmentResponse() { FileName = attachmentFile.FileName, FileId = id.ToString() }; return(Json(ApiResponse.Success(result))); }